我知道stringstream
可以使用stringstream::str()
進行更新,但是如果在此之後向stringstream
輸入了其他內容,則不會按預期工作。下面的代碼演示的現象:使用stringstream更新後,C++ stringstream無法正常工作:str()
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
stringstream ss; //ostringstream gives the same output
ss << "Original string ";
ss.str("Updated string ");
ss << "sth else";
cout << ss.str() << endl;
}
我希望得到的輸出
Updated string sth else
但它實際上輸出
sth elsestring
看來,寧可追加在最近輸入的字符串當前字符串的結尾(在我的例子中爲Updated string
),它試圖從頭開始覆蓋它。我的代碼有什麼問題?
當使用stringstream時,你必須處理輸入/輸出位置和狀態 - 避免它,並使用istingstream或ostingstream。 – 2015-02-10 23:20:54
@DieterLücking感謝您的建議。我試過ostringstream,它給出了相同的輸出。 – 2015-02-10 23:26:48
另外,不要重複使用它 - 使用一個新的實例,而不是用str來操作緩衝區(....) – 2015-02-10 23:29:17