为什么我的反向整数函数特别不适用于2位数的正整数?C++


//declare variables
int size;
string str = to_string(x);  //stores parameter number
string str2;     //stores reversed number
int reverseInt = 0;
size = str.size();

//if the input integer is positive reverses using the for loop.
if (x > 0)
{
for (int i = 0; i < size; i++)
{
str2[size-1-i] = str[i];
}
}
//exception handling for underflow/overflow
try 
{
reverseInt = stoi(str2);      
}
catch (const std::out_of_range& oor) 
{
return 0;
}
return reverseInt;

上面是我的函数的一部分,它应该影响任何类型的正整数,我已经注释了其他所有内容,以确保没有外部影响。这是某个地方的问题。我不明白的是,例如,为什么输入19会得到916……6从哪里来?我不明白我是怎么得到的。最令人沮丧的是,-19使用基本相同的方法完美转换。10给了我16,15给了我516,10给了16,这对我来说毫无意义

您没有为str2分配内存。

string str2;     //stores reversed number
str2.reserve(str.size());

使用.at(...)而不是[...]来捕捉此类错误。

最新更新