为什么getline(从文件)到cout(该行)不打印该行?

时间:2018-09-27 15:35:33

标签: c++ file output cout getline

这是我的代码。

ifstream inFile;
ofstream outFile;

string line, line2;

inFile.open("DATA.txt");
outFile.open("DATA.txt");

getline(inFile, line);
cout << line;
getline(inFile, line2);
cout << line2;

getline(cin, line);
getline(cin, line2);

outFile << line << "\n" << line2;

据我了解,getline(inFile,line)应该将文本文件的第一行分配给一个名为line的字符串。然后,cout <<行应将该字符串打印到cmd窗口中。但是,这不起作用。

我可以使用getline(cin,line)和outFile很好地输入。该文件已更新,我可以看到输入的内容,但只是无法正确读取和打印行。

p.s这是我的第一个问题,我不确定如何在标题中提出这个问题,因此我很容易受到批评。

2 个答案:

答案 0 :(得分:0)

在大多数平台上,std::cout通常会缓冲输出数据,直到输出换行符或显式刷新缓冲区后才会刷新到控制台。

尝试使用:

cout << line << '\n';

或者:

cout << line << endl;

如果您不想输出换行符,请使用:

cout << line << flush;

答案 1 :(得分:0)

所以我知道了。当我有

inFile.open("DATA.txt");
outFile.open("DATA.txt");

我认为outFile.open覆盖了inFile.open,仅导致输出部分起作用。 只需将outFile.open移至输出部分之前,而不是将其修复之前即可。我确定我的代码还有其他草率的问题,但这将其固定到了可以正常工作的地步。