数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-4-28 22:59
标题: 一个判断输入的字符串是否为数字的函数!
bool __fastcall TForm1::isnumber(const AnsiString str)
% G& [! C- x+ [1 x9 Z{) Z/ u: O( K0 `. d; l* f" _& @& ?
  int m=0;
! P9 X8 d3 w) }* ^, J$ d5 B* r& ^  int b=str.Length();5 i5 l: Y+ X& H2 o7 J
  for(int i=1;i<=b;i++)/ i) v, E# K2 r! [/ [( v7 V& ?4 k
  {
, r- I( l. i* E' K/ y     char c=str;
2 [0 t0 e( M6 k3 t( a7 r: d! i     int check=isdigit(c);! Z) |7 H9 G( d# w$ e+ ]
     if(check ==0)$ d: p  U& i; I4 `; G: {2 P6 b
     {$ a1 S) b% K6 H& k0 `5 c
       if(c!='.')
" A: u8 q  d+ P7 |" A+ |7 R         return false;/ x" |: }( j8 }! C. e# i8 P* i6 Y
       else
6 m3 N* ^" ~" n% X1 ^7 }" ~       {4 d& @# B* _) D3 C2 S! ^: n
         m=m+1;
1 n: @. ^* w$ I         if(m>1)
  R. |5 P" E/ j& r$ C6 m           return false;
9 F$ M- j# I4 i, F/ v+ w       }
  |( Z5 M5 F# `5 |/ b: \     }6 r; `$ D8 ?- V  E$ r3 C
  }4 g- h3 U8 z- ?- L4 V7 u, j
  return true;# x; ^: z6 z9 s' C3 Y# A; n
}
作者: 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的发言: 2 t% D8 ?) h1 o6 C4 S' E) Q / q$ Z7 D' k2 c, e4 O. S8 P

这样行不行?

+ v* L( ~0 _2 Y

bool __fastcall TForm1::isnumber(const AnsiString str)

- _& O/ x; ?6 i k$ p

try {

) O6 s2 Y l. ?) Y

IntToStr(str);

8 t2 U5 o- p/ l e! s

return true;

/ |. H% y) U Y3 F! ]

}

S* X& N7 q6 J& ]

castch(...)

* P! }4 _% K% n$ ?$ |/ J

{

/ f# ]8 n% e: r( d

return false;

, Z+ O H, f- l8 B; `

}

6 Z& R/ j2 N: X. l# k$ ?

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






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