如何测试字符串运算符>是否解析了坏类型并跳过它我对讨论使用的方法很感兴趣stringstream若要分析具有多种类型的行,请执行以下操作。首先,我要看一看下面的一行:"2.832 1.3067 nana 1.678"现在让我们假设我有一个长行,其中包含多个strings和doubles..解决这一问题的明显方法是对字符串进行标记化,然后检查每个字符串的转换。我有兴趣跳过第二步,并使用stringstream直接找到数字。我想了一个很好的方法来处理这个问题,那就是读取字符串并检查failbit已被设置,如果我尝试将字符串解析为Double,它将被设置为。假设我有以下代码:string a("2.832 1.3067 nana 1.678");
stringstream parser;
parser.str(a);
for (int i = 0; i < 4; ++i)
{
double b;
parser >> b;
if (parser.fail())
{
std::cout << "Failed!" << std::endl;
parser.clear();
}
std::cout << b << std::endl;
}它将打印以下内容:2.8321.3067Failed!0Failed!0我并不奇怪它不能解析一个字符串,但是内部所发生的事情,以致于无法清除其failbit解析下一个号码?
3 回答
- 3 回答
- 0 关注
- 512 浏览
添加回答
举报
0/150
提交
取消