我正在寻找我的问题的答案,但我在其他任何地方都找不到。
我试图从.txt文件中读取,该文件与我的项目文件位于同一目录中。
我写了这个简单的代码:
ifstream file("file.txt");
std::string line;
std::getline(file, line);
cout << line;
...但不幸的是,没有任何事情发生,甚至没有错误或崩溃。
进一步探索...即使我将txt(&#34;文件&#34;)文件的名称更改为不存在的文件名,也没有任何反应。< / p>
我错过了什么?
答案 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());
**我的意思是编译器不是操作系统