在C ++中使用ifstream打开文本文件时遇到问题

时间:2016-04-08 02:59:33

标签: c++ file-io ifstream

我正在处理一个文本处理器,它从文件中获取文本并将其插入到Graph数据结构中。我制作了图表,但我遇到了文本处理器的问题。每当我执行代码时,它都说我无法打开文件。我确保在执行代码时文本文件位于同一目录中。以下是GraphTextProcessor类的代码:

#include <fstream>
#include <cstring>
#include <string>
#include "Graph.h"

class GraphTextProcessor {
    private:
        Graph* m_data;

    public:
        GraphTextProcessor();
        Graph* process(std::string filename);
};

GraphTextProcessor::GraphTextProcessor() {
}

Graph* GraphTextProcessor::process(std::string filename) {
    //process text file and insert into graph here

    std::string word;

    //opens file in read mode
    std::ifstream readFile;
    readFile.open(filename.c_str(), std::ios::in);

    if (readFile.is_open()) { //Not opening
        while (readFile >> word) {
            std::cout << word << std::endl;
        }
        // Closes open text file
        readFile.close();
    }
    else {
        std::cout << "Unable to open text file." << std::endl;
    }

    return NULL;
}

我只是在尝试写入图表之前先尝试从文件中读取。这是我在Main中运行的代码:

#include <iostream>
#include <string>
#include "GraphTextProcessor.h"

int main() {
    GraphTextProcessor *gp = new GraphTextProcessor();
    gp->process("hello.txt");
}

打印"Unable to open text file"。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我自己运行代码并且工作正常。 列出您的编程环境以及您遵循的步骤。请更详细地说明您的问题并准确解释您尝试使其工作的内容。

请确保以下内容:

  1. 尝试使用完整路径名;例如,
  2. ifstream in("C:/someDirectory/andSomeOtherDirectory/one.txt");

    1. 尝试更改文件的拼写。
    2. 例如:

      "One.txt"

      "ONE.txt"

      1. 您需要获得阅读该文件的权限。尝试更改文件的权限。

      2. 尝试不同的编译器

      3. 此外,如果您使用异常处理(try,throw,catch)而不是if,否则将有助于查找错误。