您的位置:首页 > 编程语言 > C语言/C++

字符串转换成整数

2014-09-11 19:05 393 查看
题目:输入一串字符串,将其转换成整数。若字符串中包含非法字符,则返回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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息