如何将字符串中的大整数转换为uint64_t?

时间:2015-07-09 19:04:56

标签: c++ string

我有一个存储为字符串的大整数。我需要将其转换为整数(uint64_t)。我尝试stoi(),但在抛出std::out_of_range

的实例后崩溃了

该字符串的最大值为64位整数值,最大值为18,446,744,073,709,551,615(无符号long int的最大值)。

除了(当然)手动以外我该如何做?

3 个答案:

答案 0 :(得分:7)

只要字符串包含的数字小于std::numeric_limits<uint64_t>::max(),那么std::stoull()就可以达到您所期望的效果。

std::stoull()函数是C ++ 11中的新功能。)

答案 1 :(得分:4)

您可以使用std::stoull()执行此操作。 C ++ 98支持这一点(在C ++ 11中添加了#include <stdint.h> #include <iostream> #include <sstream> using namespace std; uint64_t string_to_uint64(string str) { stringstream stream(str); uint64_t result; stream >> result; return result; } int main() { string str = "1234567891234567"; uint64_t val = string_to_uint64(str); cout << val; return 0; } 函数)。

=REGEXEXTRACT(A1, "(.*)\.(.*)@")

答案 2 :(得分:0)

一种方法可能是使用stringstreams:

unsigned long long val;
std::istringstream stream(inputstring);
stream >> val;

根据this referenceoperator>>的{​​{1}}至少有一个重载,可能与unsigned long long相同。

否则您可能需要手动执行此操作,例如:将字符串拆分为可处理的部分,并通过与右基部相乘来连接结果。

为了确保我现在就这样做:

uint64_t