C/C++编程:修改atio函数 使其转换成int变得更人性化点

来源:百度知道 编辑:UC知道 时间:2024/05/24 21:32:13
一道作业题 想了老半天想不出来 高手帮帮忙啊!!!最好使用简单点的代码 不要用库函数什么的 本人菜鸟 初学:

原题:通常C++语言程序设计环境都会在stdio.h中提供一个函数 int atio(char*)将一个字符串转换为对应的整数。但该函数不支持八进制和十六进制的,且作为实际参数的字符串不能转换为整数的时候就返回0,无法确定是否在转换的过程中出现了错误。请设计一个函数改进atoi()的不足之处。(要求:新函数原型为int str2int (char* str , int& result),函数返回值表明是否出现错误,没有错误时result传回错误 )

麻烦高手帮忙下 谢谢

#include <iostream>
using namespace std;

int str2int( const char* str,int &result )
{
int ir = 0; //返回值
bool bnag = false;
for( unsigned i=0;i<strlen(str);++i )
{
if( str[i] == ' ' )
continue;
else if( str[i] == '-' )
{
if( !bnag )
{
bnag = true;
}
else
{
result = -1;
return 0;
}
}
else if( str[i] >= '0' && str[i] <= '9' )
{
ir *= 10;
ir += str[i]-'0';
}
else
{
result = -1;
return 0;
}
}
if( bnag )
{
ir = -1*ir;
}
result = 0;
return ir;
}
int main()
{
int result = -1;
cout<< str2int("23758",result )<<endl;

cout<< str2int("-234",result );

return 0;
}