xaut3 发表于 2010-5-6 07:59:55

[练习]写一个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]
查看完整版本: [练习]写一个atoi()函数

招聘斑竹