为何input1与input1_5场景下C++流的badbit未被设置?
验证double值流的问题与处理方案
背景
已经确认目标字符串仅包含0123456789-. 字符,接下来需要验证它是否为合法的double值序列。
异常现象
测试过程中发现,以下错误输入场景下,转换失败后流的badbit并未被设置,不符合预期:
- 输入
input1 = "1 2 3-":末尾带单个减号 - 输入
input1_5 = "1 2 3--":末尾带多个减号 - 末尾含多个
.的输入,例如"1 2 3..."
处理方式
受上述问题影响,无法直接使用while(buffer >> array[j])这种简洁写法完成读取与验证,必须改用包装逻辑:
while(buffer >> some_double) { // 仅在成功读取到合法double值时,将其加入数组 }
内容的提问来源于stack exchange,提问作者user18348324
相关产品推荐
相关产品推荐

