[問題] 有關 std::stringstream

作者: cutekid (可愛小孩子)   2014-12-23 13:55:32
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
int a = 1, b = 2;
string sa,sb;
stringstream ss;
ss << a;
ss >> sa;
ss << b;
ss >> sb;
cout << sa << endl;
cout << sb << endl; // 問題:為什麼這邊印不出 2
// 如圖:http://codepad.org/11j38BHP
return 0;
}
作者: tuyutd0505 (Huang Jason)   2014-12-23 14:14:00
因為 stringstream 沒有清空 在第17行加上 ss.clear()
作者: sos0214 (kaleidoscope)   2014-12-23 14:14:00
作者: tuyutd0505 (Huang Jason)   2014-12-23 14:15:00
去 Google 一下就可以查到 stringstream 的相關用法了
作者: cutekid (可愛小孩子)   2014-12-23 14:43:00
謝謝 sos0214,原來 「設成空字串」跟 clear 要同時用才會有效,非常謝謝你
作者: LPH66 (-6.2598534e+18f)   2014-12-23 20:17:00
clear 只清狀態旗標, 不清除字串
作者: Killercat (殺人貓™)   2014-12-23 21:47:00
這個雷以前踩過,只能說sstream清除非常不直覺...不過他也不大,所以直接在宣告一個來用也沒差....
作者: legendmtg (CLANNAD)   2014-12-24 03:27:00
iostream大概是C++標準裡設計最糟糕的library了...
作者: Ebergies (火神)   2014-12-24 09:52:00
所以大部分的建議都是, 不要重複使用這些東西...
作者: Killercat (殺人貓™)   2014-12-24 10:56:00
stream類都不要重用比較好 用scope的方式控制數量但是其實還是會有幾個像是fstream不重用不行的情況(死
作者: xvid (DivX)   2014-12-25 00:06:00
作者: wuliou (wuliou)   2014-12-25 18:47:00
iosteream新手初學的時候真是搞死我了
作者: s3748679   2013-01-01 03:18:00
其實也是有不用str("")的方式,舉個例子,像是input讀10個整數,中間卻夾雜了錯誤的字串,這時候就可以clear後特別再把不需要的字串拿掉就可以了用加總10個整數來當例子: http://goo.gl/JeVlCtPS: 要先compile 然後 sh testcase1.sh

Links booklink

Contact Us: admin [ a t ] ucptt.com