【问题标题】:std::string to a uint64_tstd::string 到 uint64_t
【发布时间】:2013-09-05 09:38:14
【问题描述】:

如何将std::string 转换为uint64_t?如果字符串不包含uint64_t 的纯表示,我还希望该函数抛出。例如,这些的转换应该抛出:

"NO: 9889"
"9889L"
"9889U"
"1e+22"

或以另一种方式表明它们不是纯粹的表示。我正在使用 C++98 和 boost(包括boost::regex)。

【问题讨论】:

    标签: c++ boost c++98


    【解决方案1】:

    使用boost::lexical_cast。如果数字无法解析或溢出,它将抛出bad_lexical_cast

    如果您曾经切换到 C++11,标准中有一个新功能应该更快。

    【讨论】:

    • 什么是 C++11 等价物? strtoll?
    【解决方案2】:

    forisdigit() 后跟 strtoll() 始终是一个选项。

    也许不是单行,而是一个很好的函数,可以写在你的 stringutils.cpp 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多