我一直在使用std::atoll
中的cstdlib
将字符串转换为带有gcc的int64_t
。该工具似乎在Windows工具链上不可用(使用Visual Studio Express 2010)。什么是最好的选择?
我也有兴趣将strings
转换为uint64_t
。整数定义取自cstdint
。
答案 0 :(得分:8)
MSVC有_atoi64和类似功能,请参阅here
对于无符号64位类型,请参阅_strtoui64
答案 1 :(得分:5)
使用stringstreams(<sstream>
)
std::string numStr = "12344444423223";
std::istringstream iss(numStr);
long long num;
iss>>num;
使用boost lexical_cast(boost/lexical_cast.hpp
)
std::string numStr = "12344444423223";
long long num = boost::lexical_cast<long long>(numStr);
答案 2 :(得分:2)
如果您已经进行了性能测试并得出结论认为转换是您的瓶颈并且应该非常快速地完成,并且没有现成的功能,我建议您自己编写。 这是一个非常快速但没有错误检查的样本,只处理正数。
long long convert(const char* s)
{
long long ret = 0;
while(s != NULL)
{
ret*=10; //you can get perverted and write ret = (ret << 3) + (ret << 1)
ret += *s++ - '0';
}
return ret;
}
答案 3 :(得分:1)
答案 4 :(得分:1)
Visual Studio 2013最终有std::atoll
。