我被这个简单的问题困扰了。我正在用C ++阅读文本文件:
std::ifstream stream;
stream.open(filename);
if (!stream)
cout << "Invalid stream" << endl;
并且!stream
是真的,但文本文件似乎没有任何问题。在什么情况下stream
可能是假的?
注意: is_open返回true
答案 0 :(得分:2)
您没有提供足够的信息。然而,我的精神力量揭示了:
filename
是一个相对路径,您当前的工作目录不是您想象的那样。
在if
子句中,在通过std::cout
打印之前,请添加以下内容:
perror(filename.c_str());
答案 1 :(得分:1)
您的文件可能无法访问,或者您可能没有足够的权限来访问该文件。
也许它在其他地方开放?检查文件的路径是否正确。
答案 2 :(得分:1)
此代码适用于我:
#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);
}