gpt4 book ai didi

c++ - stoi 导致超出范围错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:04 33 4
gpt4 key购买 nike

我有这个代码,它给我错误 terminating with uncaught exception of type std::out_of_range: stoi: out of range

我已经确定是由 long ascii = std::stoi(temp_string);

行引起的

我使用 stoi 的方式导致了这种情况,我该如何解决?

std::string encode(std::string message){
std::string num_value;
long cipher;
if(message.length() < 20){
for(int i = 0; i < message.length(); ++i){
int temp = (char) message.at(i);
num_value += std::to_string(temp);
}
return num_value;
}
else{
int count = 0;
std::string temp_string;
for(int i = 0; i < message.length(); ++i){
int temp = (int) message.at(i);
temp_string += std::to_string(temp);
count++;
if(count == 20){
count = 0;
//add cipher encrypt
long ascii = std::stoi(temp_string);
//cipher = pow(ascii, 10000);
//add n to cipther encrypt
//add cipherencrypt + n to num_value
//reset temp_string
temp_string += "n";

temp_string = "";

}
}
return num_value;
}

int main(){
std::string s = "Hello World my t's your name aaaaaaaaaaaaa?";
std::cout<<"encoded value : "<< encode(s)<<std::endl;
}

最佳答案

std::stoi 返回一个整数;听起来你的数字对于整数来说太大了。尝试改用 std::stol(参见 here)。

此外,如果您希望代码具有可移植性(可用于不同的编译器/平台),请记住整数和长整数没有标准大小。除非 standard 给出的最小尺寸就足够了,您可能想看看使用 intX_t(其中 X 是您想要的大小),如 cstdint header 中所示。

关于c++ - stoi 导致超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931827/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com