数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-28 22:59
标题: 一个判断输入的字符串是否为数字的函数!
bool __fastcall TForm1::isnumber(const AnsiString str)( \8 d- F% ?- F+ y/ S* B! p% V# b
{
7 Z- e9 P+ ]. `3 E; ^5 I: ?  int m=0;2 d5 U% `. e/ E) e
  int b=str.Length();
. p5 d6 P. n1 L& @/ f" w  for(int i=1;i<=b;i++)
- C3 T! J2 L0 a! N2 p4 P5 ]1 g  {9 O; O3 Z" _. }9 @% K& I
     char c=str;" R: {' O: f" A2 Q
     int check=isdigit(c);9 F' n: L: M1 ^/ s
     if(check ==0)
* U4 P) Q2 m. L% p     {
$ C" Q/ ^: T1 f8 d5 X( r       if(c!='.')# x# V/ L+ [) w- k& n0 V$ [
         return false;
) V. w- N' s7 X% P$ J. {2 j       else
0 P( s  |! T9 m+ b) z2 Q, [/ M. g       {; k* F. z7 z0 t
         m=m+1;+ A( X( D. R' H" [
         if(m>1)
5 ?: o* M1 u5 x; M" V  J/ j           return false;5 T1 f0 J) G) r2 F+ q8 V6 H  Q
       }7 w8 E. E" l9 d$ |6 Y
     }
: N- C1 Y8 w5 X  }, Q5 j: F6 d' C
  return true;: y, G+ b# C6 X- P: Y: F
}
作者: 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的发言: 5 m( o$ y6 ?* N1 r7 l% H6 ]" M$ Y 0 i0 N& @9 S( L. _

这样行不行?

; a9 W, _7 [: W* P& U

bool __fastcall TForm1::isnumber(const AnsiString str)

% k4 { ^* K- |* t

try {

P* g" t2 O. Z3 O. J

IntToStr(str);

# L& Q* x; R0 J% H4 q: U

return true;

: U S/ c: s& a5 f

}

- q4 L3 D7 D- C& l3 u. Q

castch(...)

7 u: T# I. U4 V( u( \; u, Z

{

( k8 ]+ b+ ^9 Y5 q: Y B% W& @

return false;

. s- N& b5 E% A4 M; g+ Z9 z

}

X- e( M4 T5 `4 w& x8 i/ K

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






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