std :: string到uint64_t

时间:2013-09-05 09:38:14

标签: c++ boost c++98

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

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

或通过其他方式表明它们不是纯粹的表示。我正在使用C ++ 98和boost(包括boost::regex)。

2 个答案:

答案 0 :(得分:9)

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

如果您曾切换到C ++ 11,那么标准中的新功能应该更快。

答案 1 :(得分:0)

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

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