检查像“2.4393”或“2”这样的字符串是否有效的最快方法是什么 - 它们都可以用 double 表示 - 而字符串“2.343”。或“ab.34”不是吗?特别是,我希望能够读取任何字符串,如果它可以是 double ,则为其分配一个 double 变量,如果它不能是 double (如果它是一个词或只是无效的输入),将显示一条错误消息。
最佳答案
使用std::istringstream
并确认使用 eof()
消耗了所有数据:
std::istringstream in("123.34ab");
double val;
if (in >> val && in.eof())
{
// Valid, with no trailing data.
}
else
{
// Invalid.
}
参见 http://ideone.com/gpPvu8 的演示.
关于c++ - 检查字符串是否为数字的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742761/