stringstream的一个空格引起的错误

这段代码的意思是用ostringstream存储一个string,它的内容可能来自文本,本例中是这样的

val1: 512/nval2: 1024

然后打算把它输出,用意是取出512和1024这两个数值。具体的作法是用format_message.str()取出string类型的值然后用它来构造一个istringstream,再由这个istringstream输入到val1和val2中(其过程是交换了这两个值),使它们获得新的值。

 

【问题描述】

发现dump里的值是val1:512,而val1和val2的值并没有交换

 

【分析过程】

设置断点后debug,发现dump第一次读取的值就是val1:512,这说明istringstream并没有把val1和512区分开来。

考虑istringstream区分string的标记大致有 空格、回车、制表 等,再看我的程序

format_message << "va1:" << val1 << "/n" 。。。。。。。

这里的 "va1:" 没有空格

 

【修改】

format_message << "va1: " << val1 << "/n" << "val2: " << val2 << "/n";

 

【思考】

这样看来dump第一次接收的值是val1:512,然后val1接收val2: 1024,此时由于类型不是匹配,接收失败,接下来dump和val2都没有可以接收的内容,所以val1和val2的值并没有交换

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值