c++ - 检查字符串是否为数字的最快方法是什么?

标签 c++

检查像“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/

相关文章:

c++ - 从未知派生类调用接口(interface)函数(多重继承)

c++ - 可变模板类构造函数

c++ - vector<T>::push_back() 是否调用其类型 T 的任何匹配构造函数?

c++ - 如何更新特定键的 QHash 值?

c++ - C++ 中的文件 Glob

c++ - OpenGL:无法显示纹理

c++ - boost 序列化和 double

c++ - C++ 新手,使用 "=="的/字符串相等性问题

c++ - 我的函数应该返回一个指向 std::vector 的指针,还是一个对 std::vector 的引用?

c++ - std::vector 和 _variant_t 之间的转换