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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在C++中,stringstream是一个类似于字符串流的对象,它可以用于字符串和其他数据类型之间的转换。可以使用stringstream清空、拼接字符串,以及将不同类型的数据转换为字符串。 引用中的代码示例展示了如何清空stringstream对象。可以使用clear()方法或者str("")方法来清空stringstream。当需要进行多次数据类型转换,使用clear()方法是必要的,而str("")方法适用于其他场景。 引用中的代码示例展示了一个将多个字符串拼接到stringstream中,并将其转换为string类型的示例。使用sstream的str()方法可以将其转换为string类型。 引用中的代码示例展示了如何使用stringstream将int类型转换string类型。可以将int类型的值放入输入流中,然后从sstream中抽取该值并赋给string类型。 总结起来,stringstreamC++中用于字符串和其他数据类型之间的转换,可以实现字符串的拼接、清空以及类型转换等功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++ stringstream](https://blog.csdn.net/Sakuya__/article/details/122751238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值