数学建模社区-数学中国
标题: 一个判断输入的字符串是否为数字的函数! [打印本页]
作者: 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 Ybool __fastcall TForm1::isnumber(const AnsiString str)
- _& O/ x; ?6 i k$ ptry {
) O6 s2 Y l. ?) YIntToStr(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( dreturn 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 |