意外碰到这个问题,不使用库函数。
/*
* 题:将一个字符串转换成一个整数,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
*/
#include<iostream>
#include<string>
long strtolong(string str)
{
if(str.length() == 0) retuen 0;
int flag = 0;
if(str.at(0) == '+') flag =1;
if(str.at(0) == '-') flag =2;
int i= flag > 0 ? 1 : 0;
long result = 0;
for(int i;i<str.length();i++)
{
if(str.at(i)<'0' || str.at(i)>'9')
return 0;
result = result * 10 + (str.at(i) - '0');
}
return (int)(flag==2 ? -result : result);
}
int main()
{
string str;
cin >> str ;
long result ;
result = strtolong(str);
cout << result;
return 0;
}