菜鸟笔记
提升您的技术认知

c stringstream 的clear()清空误区-ag真人游戏

在用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<

结果竟然发现运行结果是这样!!

a_str:10 b_str:102.8

怎么回事!?  原来clear() 方法只是重置了stringstream的状态标志,并没有清空数据。如果需要清空数据,可以用是s1.str(“”)来实现这个目的。

谨记!不然很容易使你的程序出现错误,并且吃掉你的内存!

网站地图