读取.txt文件时出现问题

时间:2016-11-21 22:21:42

标签: c++

我正在寻找我的问题的答案,但我在其他任何地方都找不到。

我试图从.txt文件中读取,该文件与我的项目文件位于同一目录中。

我写了这个简单的代码:

ifstream file("file.txt");
std::string line;
std::getline(file, line);
cout << line;

...但不幸的是,没有任何事情发生,甚至没有错误或崩溃。

进一步探索...即使我将txt(&#34;文件&#34;)文件的名称更改为不存在的文件名,也没有任何反应。< / p>

我错过了什么?

2 个答案:

答案 0 :(得分:0)

你怎么知道没有错误?你没有检查。

#include <cerrno>

然后

ifstream file("file.txt");
if (file) // is the file readable?
{
    std::string line;
    if (std::getline(file, line)) // did we manage to read anything?
    {
        cout << line;
    }
    else
    {
        cout << "File IO error";
    }
}
else
{
    cout << "error opening file: " << strerror(errno);
}

执行初步检查。

答案 1 :(得分:-2)

如果您的错误是由于打开文件然后provide full path to the file并检查。

在您的代码中,您正在读取第一行,因此如果它是一个空格,那么您就不会看到任何输出。

你必须迭代每一行直到最后一行(到达文件EOF的结尾)。

// let's say your file is "test.txt" which is located in D\\MyDB
// ifstream file("file.txt");

ifstream file("D:\\MyDB\\test.txt"); // use full path instead and check manully whether the file is there or not
std::string line;

if(file.fail())
    cout << "Opening file failed!" << endl;
else  
    while(std::getline(file, line))
    {
        cout << line;
    }

如果在提供完整路径时有效,则当前路径与项目不同。

你可以使用某些API更改当前目录,所以如果你在Windows上,那么使用:SetCurrentDirectory(path);并在linux上使用:chdir(sDirectory.c_str());

**我的意思是编译器不是操作系统