我有一个存储为字符串的大整数。我需要将其转换为整数(uint64_t
)。我尝试stoi()
,但在抛出std::out_of_range
。
该字符串的最大值为64位整数值,最大值为18,446,744,073,709,551,615(无符号long int的最大值)。
除了(当然)手动以外我该如何做?
答案 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 reference,operator>>
的{{1}}至少有一个重载,可能与unsigned long long
相同。
否则您可能需要手动执行此操作,例如:将字符串拆分为可处理的部分,并通过与右基部相乘来连接结果。
为了确保我现在就这样做:
uint64_t