c++ - 是否有不被视为字符的键盘输入?

标签 c++ validation input

首先感谢您花时间阅读本文,

我目前正在用 C++ 编写一个类的驱动程序,我需要用户的一些输入。我已经开始使用 typedef 创建验证程序,这样我就可以很容易地在不同类型之间切换。对于我正在处理的特定问题,我发现我只使用 char 这引出了我的问题:

  1. 我的验证检查输入是否为 char。如果我知道我只是在使用 char,那么使用验证是否毫无意义?用户输入的所有内容似乎都是一个字符。

  2. 是否有任何用户可以输入但不会被视为 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?

是的:ShiftCtrlAltNum 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/

相关文章:

C++ 错误、类和构造函数

javascript - 在 JavaScript 中使用正则表达式验证 JSON 字符串

validation - R - 检查组分配的一致性,不同名称的组标签

html - 如何制作一个带有文字+图片的提交按钮?

android - 使用智能手机时,检测加载图像是否直接从相机拍摄

c++ - 如何静态链接 libstdc++

c++ - 如何读取尚未刷新的进程输出?

input - Flutter - SingleChildScrollView 在键盘弹出时放置在屏幕顶部

c++ - OpenGL 临时缓冲区

asp.net - ASP :ValidationSummary in div elemenet and styled