我有一个可以是数字的字符串(甚至是浮点型或双精度型,不仅是整数),它也可以是非数字的单词。
我想检查这个字符串是否可以转换成双精度,如果可以,那么我想做转换。如果是非数字字符串,我想要不同的行为。
我试过这个:
double tmp;
string str;
stringstream ss;
ss << str;
ss >> tmp;
if (ss.fail())
{
// non-numeric string
}
else
{
// string to double conversion is successful
}
这段代码的问题ss.fail()
是总是true
,即使tmp
包含正确的值。
有一个函数atof()
可以将字符串转换为双精度,但这不适合我,因为0.0
如果输入字符串不是数字,它会返回值。这样我就无法区分非数字和零输入值。