C++stringstream的clear()清空誤區

在用c++寫程序時,經常回需要將int or double 等類型轉換成string。對於這個操作,我常使用的是stringstream。比如


利用這個方法就可以將int類型a的值轉換爲string類型(同理,可以轉換double,long等類型)。

如果你想要轉換多個int/double等類型的變量,而又始終用一個stringstream對象(避免總是創建stringstream的開銷),那麼你就需要在再一次用stringstream之前將stringstream的內容清空。我們首先想到的是clear()方法。經查看stringstream果然有個clear()方法(好開心^.^),於是你就這麼去應用stringstream了。


結果竟然發現運行結果是這樣!!
a_str:10 b_str:102.8

怎麼回事!? 原來clear() 方法只是重置了stringstream的狀態標誌,並沒有清空數據。如果需要清空數據,可以用是s1.str(“”)來實現這個目的。

謹記!不然很容易使你的程序出現錯誤,並且喫掉你的內存!

參考:http://blog.163.com/mageng11@126/blog/static/1408083742012214104532291/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章