输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。
给定函数原型int StrToInt(const char *str)
,实现字符串转换成整数的功能,不能使用库函数atoi。
#include <iostream>
using namespace std;
enum status {
invaild = 0, vaild
};
int g_status = vaild;
long long strToIntCore(const char* digit, bool minus) {
long long result = 0;
int flag = minus ? -1 : 1;
while (digit && *digit != '\0') {
if (*digit <= '9' && *digit >= '0') {
result = result * 10 + flag * ((*digit) - '0');
if ((!minus && result > 0x7FFFFFFF)
|| (minus && result < (signed int) 0x80000000)) { //溢出检查
result = 0;
break;
}
digit++;
} else {
result = 0;
break;
}
}
if (*digit == '\0') {
g_status = vaild;
}
return result;
}
long long strToInt(const char* str) {
g_status = invaild;
long long result = 0;
if (str && str[0] != '\0') {
bool minus = false; //是否负数
if (*str == '+') {
str++;
}
if (*str == '-') {
minus = true;
str++;
}
if (*str != '\0') {
result = strToIntCore(str, minus);
}
}
return result;
}
void test() {
char* str = "123";
int result = strToInt(str);
if (g_status) {
cout << result << endl;
} else {
cerr << "error" << endl;
}
}
int main() {
test();
return 0;
}
参考了剑指offer^_^Y