编程论坛
注册
登录
编程论坛
→
C++教室
怎么在输入的时候只输入一个类型
haibohere
发布于 2013-02-08 20:27, 456 次点击
我的意思是,比如输入只输入数字,如果键入其他的,例如、字母就报错但是不会终止输入,还可以继续输入数字
比如:我想输入567890 再输入的时候键入了5678y90也可以只是在输入y的时候给个错误声音提示但是不读入y。
6 回复
#2
TonyDeng
2013-02-08 23:32
逐个字符读入,遇到不合法的字符就舍弃,把合法的拼到结果字符串中去,然后再转换成需要的数据类型。
#3
haibohere
2013-02-09 12:22
回复 2楼 TonyDeng
能给个简单的例子吗,我才看不就c++好多函数都不清楚 。
#4
TonyDeng
2013-02-09 12:35
你用什么环境编程?
#5
TonyDeng
2013-02-09 12:47
程序代码:
#include
<iostream>
#include
<cctype>
int
main(
void
)
{
char
str[
80
];
char
* p = str;
int
ch;
printf_s(
"
Please input a integer:
"
);
while
(((ch = getchar()) != EOF) && (ch !=
'
\n
'
))
{
if
(isdigit(ch))
{
*p++ = ch;
}
else
{
putchar(
0x07
);
}
}
*p =
'
\0
'
;
printf_s(
"
Your input is: %s\n
"
, str);
getchar();
return
0
;
}
注意:使用流输入机制,是不能即时检查按键内容的,必须按Enter之后才开始后面的处理流程,所以这里你只能先输入,回车后才能看到效果,不要每按一下就回车。即时检查按键的程序不能用getchar()函数,与你使用的平台有关。
这段代码其实就是gets()的原理,但你可以检查输入字符防止溢出,并增加各种检测逻辑。
[
本帖最后由 TonyDeng 于 2013-2-9 13:20 编辑
]
#6
TonyDeng
2013-02-09 13:01
只要你看懂了我这个程序的逻辑,就可以处理任何数据类型的输入,因为最终只是要获得合法的字符串,就能向目标数据类型转换,那有各种各样现成的库函数可用,甚至可以自己写。一定要把人机交互的部分与数据处理分割开来,容错在交互部分做,不要到了数据处理阶段才来检查输入的合法性。这个做法,就是你将来写GUI时的基本思想,所有TextBox之类的输入控件,都是先得到字符串后再转换成所需数据类型的。
#7
haibohere
2013-02-09 14:24
回复 4楼 TonyDeng
我用的vs1020
1