我目前正在試圖實現一個字符串緩衝區的子類,以允許緩衝區爲特定的字符('\ n')進行標記,並採取行動如果發生此字符(在我的情況下,將消息轉儲到記錄器並清除緩衝區)。 爲了實現這個目標,我重寫sputc(實現注意'\ n')和xsputn(確實使用sputc,因爲GCC實現似乎沒有默認這樣做)。 爲了調試的目的,我讓sputc寫出傳遞給它的每個字符到stdout。流緩衝區實現std :: endl和' n'之間的差異
現在,這是我的問題:如果我使用類似
mystream << "Some text" << std::endl;
sputc接收除了「\ n」應該由標準:: ENDL被引導的每一個字符,因此,預計該行動沒有完成,因爲'\ n'沒有被傳遞。 如果我使用類似
mystream << "Some text" << '\n';
甚至
mystream << "Some text" << "\n" << std::flush;
一切如預期,我的sputc實施得到 '\ n' 字符工作。
所以我的問題是:兩個代碼行不應該完全相同的關於後面的stringbuf,如果不是,我必須重寫哪些其他方法來獲得'\ n'?
'<< std :: endl'確切地說是'<<'\ n'<< std :: flush;'。 – 2011-06-13 13:53:00
有更簡單的方法來做你想做的事情。也許如果你問一個關於真正問題的問題,你可以得到關於解決問題的最佳方法的建議。 – 2011-06-13 16:22:31