gpt4 book ai didi

c++ - 将字符串转换为整数产生了意想不到的结果

转载 作者:行者123 更新时间:2023-11-27 23:59:31 25 4
gpt4 key购买 nike

我是 C++ 的新手,现在正在解决“将字符串转换为整数”的问题。以下是我的代码,但是当我在 Xcode 上尝试时,它打印了 1068,这不是我的预期。我尝试了其他一些,刚刚出现了同样的错误。有人可以帮我解决这个问题吗?

#include <iostream>
#include <string>
using namespace std;

int myAtoi(const char* str) {
int Res=0;
bool Sign=true;
while(*str==' '){str++;}

if(!isdigit(*str)&&*str!='+'&&*str!='-')
{return 0;}
if(*str=='+'||*str=='-'){
if(!isdigit(*(str+1))){return 0;}
else if (*str=='-'){Sign=false;}
str++;
}

while (isdigit(*str)){
if(Res>INT_MAX){return Sign?INT_MAX:INT_MIN;}
Res=Res*10+int(*str+'0');
str++;
}
return Sign?Res:-Res;


}


int main(){
int sample=myAtoi(" +12");
cout<<sample<<endl;
return 0;
}

最佳答案

您应该执行 Res=Res*10+int(*str-'0'); 而不是您已经执行的操作。 *str 是您当前正在查看的字符。要将其转换为等效整数,您必须减去 '0' 的 ASCII 值。

很直观,数字 n 的 ASCII 值将是 n + ASCII(0)

关于c++ - 将字符串转换为整数产生了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40223879/

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