求救十万火急:如何判断从键盘输入的字符是否整数??
c++新手,多多指教!!
谢谢!
问题点数:20、回复次数:12Top
1 楼NowCan(城市浪人)回复于 2001-12-19 19:31:07 得分 10
判断ASCII码的范围是否在0x30-0x39Top
2 楼chenqj(吉子)回复于 2001-12-19 19:38:14 得分 0
int isdigit( int c );
Top
3 楼dabader(光之翼)回复于 2001-12-19 20:15:56 得分 0
不好意思:如何写成判断函数??
(整数的范围比较大)
再谢!!Top
4 楼ilovesex(爱在性)回复于 2001-12-19 20:24:18 得分 10
把你要输入的值看成一个字符串,然后再对这个串中的每个元素进行比较。
如果这个串中所有的字符都是'1'-'9'。 那么这个字符串就是整数型式。Top
5 楼phoenix96_2000(Arcrest)回复于 2001-12-19 20:44:46 得分 0
整数范围再大,但总得一个一个输入啊,
你去控制就是了
若是输完在判断,就用字符串了Top
6 楼dabader(光之翼)回复于 2001-12-19 20:47:10 得分 0
那么,如何提取对串中的每个元素进行比较?
:——)Top
7 楼VSaber(☆浪人☆)回复于 2001-12-19 21:19:14 得分 0
try
{
StrToInt(Edit1->Text);
}
catch(...)
{
ShowMessage('error');
}Top
8 楼knight12(12Knight)回复于 2001-12-19 22:52:29 得分 0
bool IsDigital(AnsiString sNum)
{
try
{
int iNum=StrToInt(sNum);
return true;
}
catch(...)
{
return false;
}
}Top
9 楼dabader(光之翼)回复于 2001-12-19 22:58:26 得分 0
我解决了
bool valid_input2( string input)
{
int num_int = 0;
for (string::const_iterator i = input.begin();i < input.end();++i)
{
if ( *i >= 0x30 && *i <= 0x39 )
{
num_int++;
}
}
if ( num_int == input.size())
return true;
else
return false;
}
不过又有了新问题
呵呵Top
10 楼dabader(光之翼)回复于 2001-12-20 18:50:18 得分 0
to VSaber: 能否详细点?
to knight12: Ansistring 在什么头文件里?我 #include <string> 还不行
多谢!!
Top
11 楼Bird1945(没有钱,我拿什么来爱你?)回复于 2001-12-20 19:03:34 得分 0
用 int isdigit(int ch) ;
若ch为数字则返回值为1;Top
12 楼dabader(光之翼)回复于 2001-12-20 22:02:34 得分 0
to Bird1945:
关键是,不仅要判断出输入是否整数,还要对输入不是整数而是一些随意性的字符时,能做出适当的反应。
光用 int isdigit(int ch) 好像还不行
谢谢!!Top




