我有一個程序正在拖曳一個正在增長的文件。std :: getline和eol vs eof
我試圖避免從文件中抓取部分行(例如,在該行完全由其他進程寫入之前讀取)。我知道這是發生在我的代碼中,所以我試圖特別抓住它。
有沒有一種理智的方式來做到這一點?
這裏就是我想:
if (getline (stream, logbuffer))
{
if (stream.eof())
{
cout << "Partial line found!" << endl;
return false;
}
return true;
}
return false;
但是,我不能輕易地重現該問題,所以我不知道我在這個代碼檢測它。 std :: getline剝離換行符,所以我無法檢查緩衝區中是否存在換行符。我的日誌消息(上面)從不絆倒。
是否有其他一些方法來檢查我想要檢測的內容?有沒有辦法知道我讀的最後一行是否沒有找到EOL字符而擊中EOF?
謝謝。
爲什麼不修改其他進程只刷新其輸出緩衝區到新行上的文件? – 2009-08-05 20:23:22
我沒有擁有其他進程,也沒有任何對其行爲的控制權。整合的樂趣。 – Joe 2009-08-05 20:26:00
確實。向其他部門投訴? – 2009-08-05 20:26:59