首先感谢您花时间阅读本文,
我目前正在用 C++ 编写一个类的驱动程序,我需要用户的一些输入。我已经开始使用 typedef
创建验证程序,这样我就可以很容易地在不同类型之间切换。对于我正在处理的特定问题,我发现我只使用 char
这引出了我的问题:
我的验证检查输入是否为
char
。如果我知道我只是在使用char
,那么使用验证是否毫无意义?用户输入的所有内容似乎都是一个字符。是否有任何用户可以输入但不会被视为
char
的内容?
这个问题可能看起来有点微不足道,但我以前从来没有真正想过这个问题!仍在学习语言,所以任何指导表示赞赏。
有问题的代码(ElementType 是 char
类型):
void getInput( ElementType & cho )
{
while ( !(cin >> cho) )
{
cout<< "That is an invalid input..."
<< "\nTry again: ";
}
cout<< endl;
}
最佳答案
Is there anything that the user could type in that won't be considered a char?
是的:Shift、Ctrl、Alt、Num Lock 等等。
重点是键盘本身就是野兽,每次按键、每个键的释放都有潜在的输出。键盘驱动程序(软件)接收这些事件并将它们转换为程序的 cin/stdin
的一系列 char
。或者,程序可以访问低级别事件,但可能超出标准 C++ 代码范围。
建议使用 cin
偶尔接收 any 通常 256 个不同 char
的模型,包括 '\0'
直到程序结束或 cin
从一些源关闭,可以是键盘、重定向文件输入、管道输入或远程设备。忽略输入通常 来自键盘的想法。它只是一个 char
序列。
Is using validation pointless?
验证很有用。代码应根据程序 的要求验证到达的char
- 而不是char
的要求。例如,代码可能无法处理空字符、负数 char
、超出 ASCII 范围 0 - 127 的 char
或过多的 char
> 在行尾之间。验证输入使代码能够抵御利用易受攻击程序的黑客。
关于c++ - 是否有不被视为字符的键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33288306/