8. 字符串转换整数 (atoi)/C++

匿名 (未验证) 提交于 2019-12-02 23:32:01



先确定有效字符串的起点和终点,然后再依据有无符号、正负号来处理字符串。由于存在溢出的问题,可以用long long来装结果,一旦发现不在int的范围内就直接返回。
int myAtoi(string str) {     int start=0,i=0;     long long val=0;     if(str.empty())         return 0;          //先找起点     while(i<str.size() && str[i]==' ')         ++i;     start=i;  	//找终点     if(str[i]=='+' || str[i]=='-' || isdigit(str[i])){         ++i;         while(i<str.size() && isdigit(str[i]))             ++i;     }     else         return 0;          if(str[start]=='-'){         ++start;         for(;start<i;++start){             val = val*10-(str[start]-'0');             if(val<=INT_MIN)                 return INT_MIN;         }         return val;     }     else if(str[start]=='+'){         ++start;         for(;start<i;++start){             val = val*10+(str[start]-'0');             if(val>=INT_MAX)                 return INT_MAX;         }         return val;     }     else{         for(;start<i;++start){             val = val*10+(str[start]-'0');             if(val>=INT_MAX)                 return INT_MAX;          }         return val;     } }  
文章来源: https://blog.csdn.net/Zolewit/article/details/89842642
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!