我被这个简单的问题难住了。我正在用 C++ 读取一个文本文件:
std::ifstream stream;
stream.open(filename);
if (!stream)
cout << "Invalid stream" << endl;
确实如此,!stream
但文本文件似乎没有任何问题。什么情况下可以stream
造假?
注意: is_open 返回 true
我被这个简单的问题难住了。我正在用 C++ 读取一个文本文件:
std::ifstream stream;
stream.open(filename);
if (!stream)
cout << "Invalid stream" << endl;
确实如此,!stream
但文本文件似乎没有任何问题。什么情况下可以stream
造假?
注意: is_open 返回 true
您没有提供足够的信息。然而,我的精神力量揭示了:
filename
是相对路径,你当前的工作目录不是你想的那样。
在您的if
子句中,在通过 打印之前 std::cout
,添加以下内容:
perror(filename.c_str());
您的文件可能无法访问,或者您可能没有足够的权限来访问该文件。
也许它在其他地方开放?检查文件的路径是否正确。
这段代码对我有用:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
std::ifstream infilestream;
std::string line;
infilestream.open("test.txt");
while(infilestream)
{
std::getline(infilestream, line);
cout<<line<<"\n";
}
infilestream.close();
return(0);
}