2017-07-13 29 views
4

我正在使用一些舊的C++代碼,它有strstream類,這是棄用。我需要用工作的替換它們。我可以用什麼來代替strstream :: freeze?

在我的頭文件中我得到了這一點:使用頭

ostrstream   tokenBuff; 

和.c文件:

tokenBuff.freeze(0); 
tokenBuff.seekp(0); 

我更換ostrstreamostringstream。 ostringstream具有seekp()但不凍結()。我該如何處理這個問題。謝謝。

+0

_I正在處理一些舊的C++代碼_.....那麼爲什麼[tag:c]標記....? – LPs

+1

請注意,如果代碼已經在使用它並且正在工作,繼續使用strstream是可以的 –

+0

嗨,它不起作用。目的是版本升級。 – mco

回答

6

如果是std::ostringstream,則不需要freeze() - 調用此函數的必要性實際上是首先不推薦使用strstream的原因之一。由於它的設計(返回char*str()),目前還不清楚誰應該清理緩衝區strstream持有和freeze()必須用於信號要strstream本身每次調用後做它str() - 在std::ostringstream情況下,你不需要擔心,因爲str()會返回std::string的副本。

1

ostringsteam中的freeze沒有替代品,因爲它不再需要。 ostrstreamfreeze()用於解決str()返回c樣式(char *)字符串的缺陷。

相關問題