将字符串转换为整数会产生意想不到的结果
Convert a string to an integer produced unexpected result
我是一个新的c++学习者,现在正在经历"将字符串转换为整数"的问题。以下是我的代码,但是当我在Xcode上尝试时,它打印了1068,这不是我期望的。我试了其他一些,同样的bug也出现了。有人能帮我一下吗?
#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)
相关文章:
- 为什么在递归中使用循环会产生意想不到的结果?
- 字符到int8_t转换会产生意想不到的结果?
- libc++ 对 std::map/set::equal_range 的实现给出了意想不到的结果
- 微小加密算法实现会产生意想不到的结果
- 使用 std::set 的 .begin() 和 .end() 函数会产生意想不到的结果
- 在我的C++链表实现中取消引用节点指针,给出意想不到的结果
- C++正则表达式Visual Studio Community 2015给出<regex>意想不到的结果
- istringstream int8_t产生意想不到的结果
- 划分 OpenCV 垫会产生意想不到的结果
- 提升精神,提升任何意想不到的结果
- regex_match给出意想不到的结果
- 从 PASCAL 到 C++ 的代码转换给出了意想不到的结果
- 意想不到的结果c++
- 在lambda上使用条件运算符调用std::any_of会得到意想不到的结果
- vector::insert在VS2010中执行意想不到的结果
- list resize会产生意想不到的结果
- CUDA: 2D数组索引产生意想不到的结果
- 将字符串转换为整数会产生意想不到的结果
- 在c++中,一些宏语句可能会产生意想不到的结果
- Visual Studio可变宏展开会产生意想不到的结果