[练习]写一个atoi()函数
本函数my_atoi与C标准库函数atoi相同,测试代码中与atoi比较输出结果。
#include <iostream>
#include <cstdlib>
#include <string>
#include <stdlib.h>
#include <ctype.h>
#include <string>
#include <list>
using namespace std;
// atoi
int my_atoi ( const char * str )
{
int flag = 1; //for minus or positive
int result = 0;
if(str)
{
while( *str )
{
if(( '-'==*str ) || ( '+'==*str))
{
flag = ( '-'==*str ) ? -1 : 1 ;
while( isspace(*(++str)) );
}
if( isdigit(*str) )
{
break;
}
str++;
}
if(*str)
{
do{
result =result * 10 -'0' + *str;
}while( isdigit(*(++str)) );
result *= flag;
}
}
return result;
}
int main(int argc, char *argv[])
{
list<string> li;
li.push_back("0");
li.push_back("123");
li.push_back("-12");
li.push_back("1 ");
li.push_back("1235k344");
li.push_back(" -1234");
li.push_back(" - 123");
li.push_back(" - 1234"); // \t
li.push_back("1000000000000000000000000000");
li.push_back("1a");
li.push_back("-");
for(list<string>::iterator it = li.begin(); it != li.end(); it++)
{
cout <<"input = "<<*it
<< ", atio() = " <<atoi(it->c_str())
<<", my_atio() = " << my_atoi(it->c_str())<<endl;
}
return 0;
}
posted on 2010-05-06 07:29 zhihuichien 阅读(502) 评论(0) 编辑 收藏 举报