2012-01-06 15 views
5

簡單的問題出於好奇。哪一種更高效/更簡潔:清除現有的字符串流或創建新的字符串流?

一個類的多個方法需要使用一個stringstream,或者特別是一個ostringstream。

1)有一個字符串流變量作爲類成員,然後就明確表示,每次使用它即msg.str("")

2)創建一個新的字符串流變量本地每種方法之前,你需要使用它。

從效率和整潔性角度來看,哪種方法是實現這一目標的最佳方式?

我的預感是選項1,但不確定初始構造是否與每次調用str()相比會更糟?

P.S.我讀過Initializing.. which one is more efficient?Which is quicker/more efficient?,我的下一個步驟將是我尋找到分析和寫一個小的測試應用程序,但我覺得問可能會更快:-)

+0

問題的問題是,答案將充滿宗教和民間傳說,很可能不會適用於您的情況。分析應該是首選。 – PlasmaHH 2012-01-06 10:47:34

+0

@PlasmaHH:剖析只顯示性能......如果做得對。詢問也可能指出某些方法中的其他缺陷(例如與「整齊」方面有關)。這就是說,我只能認同主觀性是一種風險。 – 2012-01-06 10:55:19

+0

分析問題是它回答了你所運行的環境的問題(如果你沒有把它填滿 - 分析可能會很棘手),並且你不瞭解一致性,可移植性或正確性諸如詹姆斯指出的問題...... – 2012-01-06 10:55:58

回答

7

不要使用stringstream開始。使用istringstreamostringstream,這是合適的。只能使用一次; 清除它是一個複雜的操作,需要幾行代碼,並且很容易忘記一些東西。 msg.str("")沒有開始到 地址的所有狀態。您還需要重置格式化標誌, 錯誤狀態,異常掩碼以及任何其他格式的信息集 通過xalloc獲取的變量。

+0

太好了,謝謝你 – 2012-01-06 10:41:28