[练习]写一个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;
}
页:
[1]
