首页 > 代码库 > c++ stringstream 的clear()清空误区
c++ stringstream 的clear()清空误区
在用c++写程序时,经常回需要将int or double 等类型转换成string。对于这个操作,我常使用的是stringstream。比如
int a = 10; stringstream s1; s1 << a; string a_str = a.str();
利用这个方法就可以将int类型a的值转换为string类型(同理,可以转换double,long等类型)。
如果你想要转换多个int/double等类型的变量,而又始终用一个stringstream对象(避免总是创建stringstream的开销),那么你就需要在再一次用stringstream之前将stringstream的内容清空。我们首先想到的是clear()方法。经查看stringstream果然有个clear()方法(好开心^.^),于是你就这么去应用stringstream了。
stringstream s1; int a = 10; double b = 2.8; s1 << a; string a_str = s1.str(); s1.clear(); s1<<b; string b_str = s1.str(); s1.clear(); cout << "a_str:" << a_str << "\t b_str:" << b_str << endl;
a_str:10 b_str:102.8
怎么回事!? 原来clear() 方法只是重置了stringstream的状态标志,并没有清空数据。如果需要清空数据,可以用是s1.str(“”)来实现这个目的。
谨记!不然很容易使你的程序出现错误,并且吃掉你的内存!
参考:http://blog.163.com/mageng11@126/blog/static/1408083742012214104532291/
c++ stringstream 的clear()清空误区
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。