TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
本函数my_atoi与C标准库函数atoi相同,测试代码中与atoi比较输出结果。
$ k3 e, E5 R6 Q& I7 f/ h: a#include <iostream>! ?( h& E# d! E, ?1 W
#include <cstdlib>
7 a" ?6 T4 G; f) c8 X#include <string>5 a j( C" r K7 N3 s
#include <stdlib.h>
6 \7 _5 \5 Y0 t. E#include <ctype.h>" D! I# r# H& A$ g/ T( y
#include <string>
3 c6 o9 R! r; [0 b# |& }#include <list>
3 T+ w& r+ U# p9 i. a7 u. k* rusing namespace std;. S6 b2 b; m5 l0 }0 g0 O, T( e
// atoi
2 ?: L$ l8 ~9 h# I! M7 |; lint my_atoi ( const char * str )
. M* x0 l3 v# x" J9 X{: U7 @# @! i5 _' X, Y
int flag = 1; //for minus or positive
+ ]3 A& h& k0 E! G+ c int result = 0;
: r- e6 V' S% @3 [ if(str)
0 ?& c( i( u) x8 q. A% ~5 @6 U {4 ~" g' i) @2 l
while( *str )
7 R; ^) x1 _* p { p& q$ n; ?, f1 V5 G% A8 H* ^
if(( '-'==*str ) || ( '+'==*str))
1 E0 l( X9 h. l, W5 W {
0 d7 |4 J. B2 W+ e z/ Y flag = ( '-'==*str ) ? -1 : 1 ;
. T7 a& N8 B8 D+ _% W9 q while( isspace(*(++str)) );/ o- U% V( g% X/ l
}1 W" _9 g& j$ w. j5 e1 O; P
if( isdigit(*str) ) \6 w r) z. K; O& a' G( w
{
# Q5 g' u) f8 w3 n [& s$ e2 M break;
& O( n6 ?/ x7 j R9 r: G3 U }
* E. p9 ^# z8 r6 [ str++;
% P& r4 e2 s2 |" _ }4 P; p: [0 b, Q
if(*str)! i' `% K& a( s. A) Y5 N6 \
{
/ j' [$ B7 t( j0 n( V& n* g do{& \8 H: s3 U$ x/ h+ y# o. k, N
result =result * 10 -'0' + *str;1 t6 m e: }% ~. f H: C
}while( isdigit(*(++str)) );! O% b6 |: Z7 J6 y' R( c) k5 W
result *= flag;9 a& N2 Y1 P; t! K# c% S9 N
}
/ c. v7 \" L3 {0 a8 y. H0 r% S }# Y! v7 [. B* E7 m+ T
return result;" y9 l+ s3 F+ V6 p$ J. j% r
}; ?4 F8 `* Q7 q. c$ I( `
int main(int argc, char *argv[])
9 z6 K6 u$ ]( j2 X: K; V) U{% p! R+ w; |6 }7 h: ^' H
list<string> li;/ S% g' }- V% C2 W; u! c6 b. C
li.push_back("0");+ M/ l' r5 h E: D0 r8 j
li.push_back("123");
) V0 T' B& r5 M; K* T# w li.push_back("-12");/ S7 l2 a5 t" B
li.push_back("1 ");+ q; C; b* P8 G' b) Y; h5 v
li.push_back("1235k344");
1 P# g; |) P" x. C8 F" r+ | li.push_back(" -1234");. G' ~$ [" @! C; b8 H4 r
li.push_back(" - 123");9 x" f0 n. e* d" a
li.push_back(" - 1234"); // \t
$ n7 |7 C9 H' ~- D6 ]! c, q, k li.push_back("1000000000000000000000000000");# {+ {2 Z5 b- u: o5 \+ T9 S( z
li.push_back("1a");4 _4 E% J7 @& m
li.push_back("-");
, O2 n% k4 Q( c6 I# T; n0 G for(list<string>::iterator it = li.begin(); it != li.end(); it++)
5 s7 x! {3 D, f: l1 c6 r {
( {( T& m W5 C7 _" E: n2 y1 W cout <<"input = "<<*it
1 H9 |0 q5 q2 O% ?* L- V << ", atio() = " <<atoi(it->c_str())
( Q+ y3 [9 d! ^7 w: p8 l. S <<", my_atio() = " << my_atoi(it->c_str())<<endl;- P/ U/ r0 X" w) ]
}. v& I' A% F1 b' m
return 0;2 ~4 Y1 @. I4 p6 n8 ^, h
} |
|