题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。
题目比较简单,但是涉及到许多问题,例如非法输入,有正负号,是否为空字符串等等
//把字符串转换成整数 #include<iostream> #include<string> using namespace std; enum flag{ valid=0, invalid }; int judge=valid; int paraInt(string s){ long num=0; int f=1; if(s.empty()) judge=invalid; //判断是否为空字符串 else{ string::size_type i=0; if(s[0]=='+') { //正负号 i=1; if(s.length()==1) judge=invalid; //不加这步若字符串为"+"会输出0 } if(s[0]=='-') { i=1; f=-1; if(s.length()==1) judge=invalid; } for(i;i<s.length();i++){ //转换 int temp=s[i]-'0'; if(temp>=0&&temp<=9) num=num*10+temp; else{ judge=invalid; break; } } } num*=f; return static_cast<int>(num) ; //类型转换 } int main(void){ string s; cin>>s; int num=paraInt(s); if(!judge) cout<<num<<endl; else cout<<"invalid input"<<endl; system("pause"); return 0; }