标签:
if((result > numeric_limits<int>::max() && !isNegative) || (result < numeric_limits<int>::min() && isNegative))
来判断。溢出后也直接退出转化的操作。
#include <iostream>
#include <string>
#include <limits>
using namespace std;
bool validInput = false;//表示是非法输入
int strToInt(const char *str){
//bool invalid
bool isNegative = false;//用于判断是否是负数的标志
long result = 0;//用于保存最后的结果
const char *digit = str;
if(digit != NULL){
if(*digit == ‘+‘){//判断是否是正数
//isNegative = false;//不需要重新赋值
digit++;
}
else if(*digit == ‘-‘){//判断是否是负数
isNegative = true;
digit++;
}
while(*digit !=‘\0‘){
if(*digit >=‘0‘ && *digit <=‘9‘){
result = result*10 + (*digit -‘0‘);//得到一个数字
if((result > numeric_limits<int>::max() && !isNegative) || (result < numeric_limits<int>::min() && isNegative)){
result = 0;//溢出后的处理
break;
}
digit++;
}
else{//遇到非法字符,停止计算,直接退出
result = 0;
break;
}
}
if(*digit == ‘\0‘){//如果到达最后一个字符时,则是有效输入。
validInput = true;
if(isNegative){
result =(-1)*result;//or result =0-result
}
}
}
return result;
}
int main(void){
cout<<"Enter a string:"<<endl;
char *mystring = new char[100];
cin>>mystring;
cout<<"After Convert,the result is :"<<endl;
cout<<strToInt(mystring)<<endl;
cout<<"The status of the string is "<<validInput<<endl;
delete[] mystring;//释放内存空间
system("pause");
return 0;
}
输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。
标签:
原文地址:http://www.cnblogs.com/micstone/p/4248172.html