数学建模社区-数学中国

标题: 一个判断输入的字符串是否为数字的函数! [打印本页]

作者: ilikenba    时间: 2004-4-28 22:59
标题: 一个判断输入的字符串是否为数字的函数!
bool __fastcall TForm1::isnumber(const AnsiString str)" j  l. n' H; ^; E. d$ A
{) f4 N$ _, f" q1 c1 u  e- e
  int m=0;
7 i1 B9 s* a. C( G  int b=str.Length();/ y) w! ^0 W; t5 o
  for(int i=1;i<=b;i++)' G, G$ E6 V9 U. P
  {1 x( _4 F" i1 j# ]5 }" H% N
     char c=str;/ A9 a- w4 E6 N0 e' X. H" t; c
     int check=isdigit(c);6 d# M2 {% C& u) F9 e; P7 v  U
     if(check ==0)3 L, V! I7 ^0 X( I0 x
     {( H( R/ a" ^$ E% K+ S  m
       if(c!='.')
: \- o/ y: `; p: S0 a( e6 a8 g$ O         return false;
2 D5 R$ z# b5 z. m       else1 W- a' F. z# z3 q' ^" N
       {. T$ s  T% x4 }& T
         m=m+1;
7 V" T: s7 B( y* C$ T9 ]; Q4 w         if(m>1)
( B8 t9 s! a  [           return false;
; m: @# x2 f. w       }( ?. n, f$ r3 M! T# G" c" |5 y7 k% |& [
     }- l0 T" ]; E6 f9 h+ c0 |# c
  }
* V" D/ ]- D/ d+ j: b5 F8 r/ c: m& _  return true;) y) h2 l# v) i$ a1 l* u( M
}
作者: libertysigil    时间: 2004-4-30 17:06

这样行不行?

bool __fastcall TForm1::isnumber(const AnsiString str)

try {

IntToStr(str);

return true;

}

castch(...)

{

return false;

}


作者: ilikenba    时间: 2004-4-30 20:45
以下是引用libertysigil在2004-4-30 17:06:03的发言:: w T; \/ X+ L( B/ _ - i4 Q: H# Y" Q

这样行不行?

_; S+ m4 w4 ]# i. o- P$ p

bool __fastcall TForm1::isnumber(const AnsiString str)

L- o2 ] K% M T

try {

7 j0 H$ r& _. k2 p7 `; ~

IntToStr(str);

, _' g. H, o" r3 b& V R/ i2 b

return true;

. Z( G: I% x- D/ q

}

7 @: K5 l7 B5 i

castch(...)

5 A c' f. u* t' @6 d

{

& A1 C% W* y- i

return false;

1 P8 \# |6 z2 o6 `0 u

}

: X$ P) f( D2 W: `) m" V9 G- j$ O

注意对于一个函数来说,应该做的尽量健壮,你的那个函数利用了VCL的默认异常处理器,但是如果你在析构函数中需要利用这个函数,就不能用你这个函数,因为析构函数很可能就是一个异常引起的,它需要释放一个对象的内存,要是在这里还要引发异常的话,就很难做到了!






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5