把字符串转换成整数
2016-11-06 19:46
197 查看
代码:
测试:
#include <iostream> using namespace std; enum STATUS { STATUS_VALID = 0, STATUS_INVALID }; int g_nStatus = STATUS_VALID; int StrInt(const char*, int); int StrToInt(const char* str) { long long num = 0; g_nStatus = STATUS_INVALID; int minus = 0; //正负号标记 if (str != nullptr && *str != '\0') { if (*str == '+') { str++; } else if (*str == '-') { str++; minus = true; } if (*str != '\0') //有效字符 { num = StrInt(str, minus); } } return num; } int StrInt(const char* str, int minus) { long long num = 0; while (*str != '\0') { int flag = minus ? -1 : 1; if (*str >= '0' && *str <= '9') { num = num * 10 + flag*(*str - '0'); if ((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) { num = 0; break; } str++; } else { num = 0; break; } } if (*str == '\0') { g_nStatus = STATUS_VALID; } return (int)num; } int main() { cout << StrToInt(NULL); cout << " g_nStatus: " << g_nStatus << endl; /* 注:不能使用cout<< StrToInt(NULL) << " g_nStatus: " << g_nStatus << endl; 因为在StrToInt(NULL)中可能会修改g_nStatus,不同编译器对连续多个输出 处理的时候优先级不同,这里会输出0 g_nStatus: 0,下同 */ cout << StrToInt(""); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("123"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("+123"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("-123"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("1a33"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("+0"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("-0"); cout<< " g_nStatus: " << g_nStatus << endl; //有效的最大正整数, 0x7FFFFFFF cout << StrToInt("+2147483647"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("-2147483647"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("+2147483648"); cout<< " g_nStatus: " << g_nStatus << endl; //有效的最小负整数, 0x80000000 cout << StrToInt("-2147483648"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("+2147483649"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("-2147483649"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("+"); cout<< " g_nStatus: " << g_nStatus << endl; cout << StrToInt("-"); cout<< " g_nStatus: " << g_nStatus << endl; cout << endl; system("pause"); return 0; }
测试:
相关文章推荐
- 数字字符串转换成整数
- 字符串与整数之间的转换(16进制)
- LINQ 学习笔记-字符串数组与整数数组之间的转换,排序
- [导入]一个将整数转换成字符串的函数itoa
- 整数转换成字符串
- 将8进制字符串转换为整数的代码
- 导师作业:2、编写一个函数,将一个整数值转换为16进制表示的字符串。
- 7.1.3 整数和字符串之间的转换
- 顺计时器,将整数转换成分:秒(00:00)形式的时间格式字符串
- atoi(char *str)将字符串转换成整数
- C++ 正负整数转换成字符串并求串的长度
- C/C++面试之算法系列--从“整数转换成字符串”看算法的联想
- 整数转换成字符串的程序--不太成熟
- 去除前导零和字符串转换为整数
- java字符串应用之IP地址转换成整数
- 将整数转换成字符串
- strtol----将16进制字符串转换为整数
- 程序员面试题精选(17):把字符串转换成整数
- 字符串与整数互相转换
- 请编写一个 C 函数,该函数将给定的一个整数转换成字符串