考虑下面的 C++ 程序,它接受一个文件并打印每一行。它是一个更大程序的一部分,我稍后会根据我看到的内容将其附加到文件中。
#include <fstream>
using std::fstream;
#include <iostream>
#include <string>
using std::string;
int main()
{
fstream file("file.txt", fstream::in | fstream::out | fstream::app);
string line;
while (std::getline(file, line))
std::cerr << line << std::endl;
return 0;
}
现在应用这个版本的file.txt
(第一行一个单词,后跟一个换行符):
Rain
在我的机器(Snow Leopard)上,这没有打印出来。仔细检查,第一次调用 getline 失败。奇怪的是,如果我添加第二行,它也会失败:仍然没有打印!
谁能解开这个谜?