数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-28 22:59
标题: 一个判断输入的字符串是否为数字的函数!
bool __fastcall TForm1::isnumber(const AnsiString str)
! T" Q% Y, [9 _$ y& G) y  f: E{
, u7 y9 ]+ c' z  int m=0;
* {2 E# ]8 E: \  m9 p! ]  int b=str.Length();
) b) _  [; \  @+ W( }: p2 q  for(int i=1;i<=b;i++)! D/ y% O5 |6 H. S, ^$ |0 H
  {
) v+ Z3 N! s* w6 M  `     char c=str;
4 k. [7 Z7 W  F% J  T     int check=isdigit(c);# U. [& N* C& [$ @9 u* {  _
     if(check ==0); c0 j# {7 D3 x# ?6 }, l
     {2 r4 N/ d3 e2 d+ t' y) E1 y- h
       if(c!='.')
0 V; {0 \3 b! E) v' n         return false;* {3 S6 q9 G, [, s
       else9 C) E6 ^- X! |( a( s
       {
2 F% Z& g1 a& g) C  R) R* S+ C         m=m+1;. H. u5 y) }5 I3 l
         if(m>1)
1 @/ X# J. W/ e9 k           return false;
) j1 N# a6 A, d/ n       }4 O& ~" l' `, {6 ~0 U
     }" G3 D" x" t* o4 T
  }7 o8 ^8 l) R  Y0 X
  return true;
# f  P$ ^1 x" Z: H5 e- V+ u}
作者: 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 G4 J. l+ R# w! a4 ^9 y6 }' |) N; f/ Q4 q ]9 }% [2 b2 J$ m/ X

这样行不行?

( z5 l0 N# I3 R

bool __fastcall TForm1::isnumber(const AnsiString str)

5 e( L: k1 R5 A

try {

8 z1 f* T+ N" Z

IntToStr(str);

1 s+ `& g6 d3 y

return true;

, Z( }; e P$ _5 F

}

/ i4 P) r- t5 ^8 C# [

castch(...)

) h5 R1 Z+ b4 E3 W: Z+ P

{

8 `: \) M( q2 \' s/ \

return false;

, ~2 H5 Y( ~6 v8 u& _

}

8 W5 Y- B! z5 E

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






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