是否有不被视为字符的键盘输入?
Is there keyboard input that isn't considered a char?
首先感谢您花时间阅读这篇文章
我目前正在为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;
}
<是否有任何用户可以输入但不会被认为是字符的内容?
Yes: 转变/kbd>, Ctrl , Alt , 数字锁定键等等。
关键是键盘是它自己的野兽,对于每一个键的按下和释放都有潜在的输出。键盘驱动程序(软件)接收这些事件并将它们转换成一系列的char
,用于程序的cin/stdin
。或者,程序可以访问低级事件,但可能超出标准c++代码的范围。
建议保持cin
偶尔接收包括' '
在内的256个不同char
中的任何的模型,直到程序端或cin
从某些源(键盘、重定向文件输入、管道输入或远程设备)关闭。忽略输入通常来自键盘的想法。它只是char
的一个序列。
使用验证毫无意义吗?
验证是有用的。代码应该根据程序的需求来验证到达的char
,而不是char
的需求。例如,代码可能在处理空字符、负char
、ASCII范围0 - 127之外的char
或行尾之间太多的char
时遇到问题。验证输入使代码能够抵御黑客利用脆弱程序的攻击。
在Linux下,使用UTF-8输入,我当然可以输入很多不是char
的东西。例如,输入á
会得到两个字节。还有很多其他的,可以直接输入,这取决于相应的键盘处理。
国际字符处理复杂。不是世界上所有的类型都是ASCII。
- 视窗键盘输入 c++
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- C ++异步键盘输入(标准方式)
- 盖奇不读取键盘输入
- 在 Linux 上C++:在作为 systemd 服务运行时侦听键盘输入
- 是否可以将键盘输入绑定到 Win32 中的单个应用程序?
- 使用 Windows API c++ 的键盘输入
- 如何检查从键盘输入的特定整数值是否存在于C++文件中的一行或多行中
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 从特定 USB 端口捕获键盘输入
- 使用 sfml 进行 2 个键盘输入
- 如何对并行键盘输入进行编程
- 区分键盘记录器中的密码和其他类型的键盘输入
- OpenGL/GLFW/GLM-键盘输入无反应
- 在 MFC 应用中模拟应用内的键盘输入C++
- 如何在C++中终止具有键盘输入的侦听 TCP 服务器
- 通过键盘输入字符串数组和 int 数组的数组大小
- QString变量在使用QT Creator从键盘输入的双变量后跳过
- 如何在CPP中获取直接键盘输入?(跨平台)
- SDL键盘输入未触发