[问题] 有关 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