数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-28 22:59
标题: 一个判断输入的字符串是否为数字的函数!
bool __fastcall TForm1::isnumber(const AnsiString str)9 `: K  h! f+ [/ q3 p) X; E  e3 V
{  [; y2 T% ]! A3 D- Q4 s7 _2 z8 n
  int m=0;
$ l* g4 r& r) p# E2 G  int b=str.Length();7 v/ H  M4 _" e& h
  for(int i=1;i<=b;i++)) N. u, D+ T7 w  }% W
  {
2 W4 m* Z- i/ [2 D8 H- t* p  c     char c=str;' g5 }5 t5 u+ y7 c0 P' s
     int check=isdigit(c);4 d2 m; T5 ~9 g6 w
     if(check ==0)
9 e1 R% F/ o% _6 T     {
$ }6 ?* p- P# Z: `. U, ?# _       if(c!='.')# \- m$ d+ S; E9 O
         return false;/ B" z8 A, c, h
       else$ Y' c0 O: B  A! F' B$ W
       {6 I# l! G' Y' E, T: S
         m=m+1;
, U, @# q! w. c1 V' [7 j3 T         if(m>1)
7 D1 a1 f$ K7 ^: x. i" r4 H  L           return false;
# v3 }% b. v9 a7 e       }" C7 ]  U# G  U' e4 f
     }
+ k5 |; Y3 I  A) U5 J5 x  }
* L: b: J- M3 C% v6 Y- N  return true;* [6 H3 x6 k$ ~- x
}
作者: 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的发言: 6 m. Y( v0 @ e ( R5 J) E; K, M3 ~+ Q. S

这样行不行?

& }) g8 d3 ]) v

bool __fastcall TForm1::isnumber(const AnsiString str)

6 n9 @& P, }+ w" w5 \

try {

& U% L; k g1 R

IntToStr(str);

2 @2 D) \ {: U: C: M- f1 |+ h& `

return true;

7 K5 H4 v- e, D' `* W' O2 l

}

5 i+ j8 Z9 S a' E! ]$ u' Y

castch(...)

9 b( g$ G: o, v I, ?

{

: J+ B" S$ Y! Q6 ^3 |/ \

return false;

\8 z9 i9 ~6 D+ |% o" K

}

` c' N! Y8 C! d

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






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