考慮下面的C++程序,它接收一個文件並打印每一行。根據我所看到的,這是我稍後追加到該文件的較大程序的一部分。爲什麼我不能在Mac OS X上讀取和追加std :: fstream?
#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
在我的機器(雪豹),這個打印出什麼。經仔細檢查,第一次調用getline失敗。奇怪的是,如果我添加第二行,它也會失敗:仍然沒有打印!
誰能解開這個謎?
你的程序爲我工作,所以它可能是在您的環境中的錯誤。你有沒有嘗試開放只讀,即只是'fstream :: in'? – 2010-02-21 09:53:54
在這裏也能正常工作,就像Earwicker說的那樣,並檢查你的文件是否真的被打開。 – Manuel 2010-02-21 09:56:32
順便說一句,你正在發送文本到'std :: cerr' - 'std :: cout'對於實際輸出會更加正常。 'std :: cerr'用於錯誤報告(正如我的答案中)。 – 2010-02-21 10:01:21