我正在尝试将任意长度的字符串转换为int类型,但到目前为止,它只适用于有限长度的字符串。到目前为止的代码:
long long convertToInt (std::string x){
long long number;
std::istringstream ss(x);
ss >> number;
return number;}对于x=100000000000000000000000001,该函数返回0。有人能解释一下为什么吗?谢谢。
发布于 2013-05-08 15:16:08
编译器提供的内置整数类型只能保证能够存储特定大小的数字。看起来你的数字比这还大。您可能会发现C++程序正在报告错误-尝试...
if (ss >> number)
return number;
throw std::runtime_error("conversion of string to int failed");...or任何你想要的其他错误处理。
如果你必须使用更大的数字,你可以尝试double,或者如果这不适合你的需要,那么可以看看像GMP这样的“任意精度”库-你会发现很多关于处理大数字的堆栈溢出问题,答案是暗示,对比和说明GMP和替代方案。
https://stackoverflow.com/questions/16434726
复制相似问题