-2

我被这个简单的问题难住了。我正在用 C++ 读取一个文本文件:

std::ifstream stream; 
stream.open(filename); 
if (!stream) 
   cout << "Invalid stream" << endl; 

确实如此,!stream但文本文件似乎没有任何问题。什么情况下可以stream造假?

注意: is_open 返回 true

4

3 回答 3

3

您没有提供足够的信息。然而,我的精神力量揭示了:

filename是相对路径,你当前的工作目录不是你想的那样。

在您的if子句中,在通过 打印之前 std::cout,添加以下内容:

perror(filename.c_str());
于 2012-11-01T15:32:02.283 回答
1

您的文件可能无法访问,或者您可能没有足够的权限来访问该文件。

也许它在其他地方开放?检查文件的路径是否正确。

于 2012-11-01T15:27:59.453 回答
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);

}
于 2012-11-01T16:41:55.773 回答