字符串转换成整数
2014-09-11 19:05
393 查看
题目:输入一串字符串,将其转换成整数。若字符串中包含非法字符,则返回0并标记非法输入。
示例:输入 -1234 输出-1234
输入+1234 输出1234
输入1234 输出1234
输入123a 输出0,并有标志位指示无效输入。
分析:注意可能输入的各种情况
程序:
示例:输入 -1234 输出-1234
输入+1234 输出1234
输入1234 输出1234
输入123a 输出0,并有标志位指示无效输入。
分析:注意可能输入的各种情况
程序:
#include <iostream> #include <limits> using namespace std; bool isValidstr = false; int main() { char *str = new char[50]; long long mystrtolint(const char *str); cin >> str; long long num = mystrtolint(str); if(isValidstr) cout << num << endl; else cout << str << " is invalid!" << endl; system("pause");//按任意键继续... return 0; } long long mystrtolint(const char *str) { if(str==NULL) { isValidstr = false; return 0; } if((*str=='+' && *(str+1)=='\0') || (*str=='-' && *(str+1)=='\0')) { isValidstr = false; return 0; } long long number = 0; bool isnegative = false; const char *pch = str; if(*pch=='+') { isnegative = false; pch++; } else if(*pch=='-') { isnegative = true; pch++; } while(*pch!='\0' && *pch>='0' && *pch<='9') { number = number*10 + (*pch) - '0'; if((!isnegative && number>(numeric_limits<unsigned long>::max)()) || (isnegative && number<(numeric_limits<signed long>::min)())) { isValidstr = false; number = 0; break; } pch++; } if(*pch!='\0') { isValidstr = false; return 0; } else { if(isnegative) number = 0-number; isValidstr = true; return number; } }
相关文章推荐
- 数字字符串转换成整数
- 字符串与整数之间的转换(16进制)
- LINQ 学习笔记-字符串数组与整数数组之间的转换,排序
- [导入]一个将整数转换成字符串的函数itoa
- 整数转换成字符串
- 将8进制字符串转换为整数的代码
- 导师作业:2、编写一个函数,将一个整数值转换为16进制表示的字符串。
- 7.1.3 整数和字符串之间的转换
- 顺计时器,将整数转换成分:秒(00:00)形式的时间格式字符串
- atoi(char *str)将字符串转换成整数
- C++ 正负整数转换成字符串并求串的长度
- C/C++面试之算法系列--从“整数转换成字符串”看算法的联想
- 整数转换成字符串的程序--不太成熟
- 去除前导零和字符串转换为整数
- java字符串应用之IP地址转换成整数
- 将整数转换成字符串
- strtol----将16进制字符串转换为整数
- 程序员面试题精选(17):把字符串转换成整数
- 字符串与整数互相转换
- 请编写一个 C 函数,该函数将给定的一个整数转换成字符串