如何将std::string
转换为uint64_t
?如果字符串不包含uint64_t
的纯表示,我还希望函数抛出。例如,这些转换应抛出:
"NO: 9889"
"9889L"
"9889U"
"1e+22"
或通过其他方式表明它们不是纯粹的表示。我正在使用C ++ 98和boost(包括boost::regex
)。
答案 0 :(得分:9)
使用boost::lexical_cast
。如果数字无法解析或溢出,它将抛出bad_lexical_cast
。
如果您曾切换到C ++ 11,那么标准中的新功能应该更快。
答案 1 :(得分:0)
for
isdigit()
后跟strtoll()
始终是一个选项。
也许不是单行,但在stringutils.cpp中写一个很好的函数。