数学建模社区-数学中国
标题: 一个判断输入的字符串是否为数字的函数! [打印本页]
作者: 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- |* ttry {
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. Qcastch(...)
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 |