2011-05-18 56 views
-2

如何爲ostringstream對象追加數據? Assumingly:設置ostringstream自動追加

ostringstream oss; 
oss << '0x11'; 

如何設置執行自動從最後已知的元素oss << 0x22?我通讀了我需要設置一些標誌,但我該怎麼做?

編輯:對這個問題非常含糊不清。那些咖啡正在磨損。從我上面的問題擴展:

ostringstream oss(osstringstream::app)它設置爲每次追加?我的目標是創建一個字符串。

+11

我不明白。流總是附加。你想達到什麼目的? – 2011-05-18 11:24:25

+0

它與C-tag有什麼關係? – cpx 2011-05-18 11:31:23

+2

將標籤更改爲「ostringstream」與c無關c – mkaes 2011-05-18 11:33:19

回答

1

當傳遞給 ostringstream構造函數時,沒有指定app標誌的作用。此標誌僅與 ofstream有關。另一方面,ostringstream流, 並且因此,如果在此期間沒有發現搜索,則在先前的插入數據之後總是插入數據。畢竟,這是輸出流的定義。

-1

這就是ateapp之間的區別作爲開放模式。 ate位置在打開後的末尾,然後單獨離開寫入位置(所以如果你需要它,你可以在任何地方寫入),app確保所有的寫入都在流結束時完成。

編輯:實際上,stringstream的行爲不同,所以不要依賴它。

+0

除'ate'和'ape'只與'filebuf'和'[oi] fstream'有關外。它們是'open'的參數,並且沒有'stringbuf'的定義。 (形式上,我認爲傳遞它們將是未定義的行爲,因爲標準沒有爲它們指定語義。) – 2011-05-18 12:48:01

+0

@詹姆斯,你有參考嗎?這是我的,但沒有發現任何說明,吃和猿只與filebuf有關。它們被用於open()的描述中,以便爲fopen提供等價的參數,但是它們在ios_base中的描述不需要針對字符串流進行擴展,而不再是對seekdir或iostate的描述。 – AProgrammer 2011-05-18 13:02:13

+0

它們的完整語義在'filebuf'中描述; 'stringbuf'只描述'in'和'out'的效果。但是你可能有一個觀點:'openmode'描述中的表格確實總結了一個語義。但是,如果這適用,'trunc'對'streambuf'意味着什麼?或'二進制'?我認爲這個問題對我來說是足夠開放的,可以提交一份DR。 – 2011-05-18 13:18:03

0

當您在第一個示例中創建stringstream時,它將默認附加。