佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 901|回复: 4

C++ 怎样写出只能接受number input的 syntax?

[复制链接]
发表于 2-11-2012 09:25 PM | 显示全部楼层 |阅读模式
疑问: C++ 怎样写出只能接受number input的 syntax?

意识你key in number 进去 它会接受,可是你key in letter 进去 它会reject , key in letter+number也会reject, 怎样样写出来? 我在我的programing assignment里遇到了这个大问题, 求解。



回复

使用道具 举报


ADVERTISEMENT

发表于 3-11-2012 01:41 AM | 显示全部楼层
有两种考虑:
A) 在输入每一个 key 都检查
B) 输入完成 (press enter / tab),才检查。

检查的方法都一样,可以用 regular expression

是不是需要接受这样的数字呢?
+12345.00
-12345.00

而如果要做方法 A 还需要考虑左右 back space 空格键的处理。
回复

使用道具 举报

 楼主| 发表于 3-11-2012 01:00 PM | 显示全部楼层
对你的方法有点略懂略懂。。。 有没有已经做好了的syntax?
回复

使用道具 举报

发表于 4-11-2012 10:51 PM | 显示全部楼层
先从容易的做起吧。

最近比常用 C#

try {
     num = Convert.ToInt32 ( str1 );
} catrh {
     num = 0;
}

上网找找吧并试试做做看。
应该有不少入门教学都有。

本帖最后由 flashang 于 4-11-2012 10:53 PM 编辑

回复

使用道具 举报

发表于 5-11-2012 03:16 AM | 显示全部楼层
用atoi, atof或strtol吧!
缺点是你不知输入的是错误还是0。
它都当是0。
这至少会避免当机。

double fnum = atof(inputStr);

http://www.cplusplus.com/reference/clibrary/cstdlib/atof/

要知道是输入letter或number的话,
得自己写了。
做法就是检查每一个char了。

下面是检查Integer的做法。
e.g.:

BOOL bError = FALSE;
for(int cnt=0; cnt<strlen(inputStr); cnt++)
{
    if (inputStr[cnt]< '0' || (inputStr[cnt]> '9')
        bError = TRUE;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-10-2025 01:43 PM , Processed in 0.103630 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表