我有一个名为 entry 的 char 变量,用户必须输入 Y/N ,如果输入其他内容,则应显示有关输入数据不正确的消息,并要求再次输入,直到输入 Y/N 或 y/n。出于某种原因,我的错误消息循环显示的错误字符数与我输入的错误字符数一样多,我不明白为什么。
这是代码本身:
char entrance;
cin >> entrance;
while((entrance != 78) && (entrance != 110) && (entrance != 89) && (entrance != 121))
{
cout << "Неверный ввод! Следует ввести Y/N, попробуйте еще раз:";
cin >> entrance;
cout << "" << endl;
}
一般来说,我什至不确定这种方法的正确性,这只是大型 OOP 任务的一小部分。您需要编写一个程序来预订酒店,而这小部分代码负责程序的延续,具体取决于数据输入。
因为
entrance
只有第一个字符被分配给变量,所以其余的都保留在输入流缓冲区中,并且在下次cin
调用类似的输入函数时无需您询问即可插入。为了更好地理解这一切,您可以检查程序是如何工作的:如果输入了多个字符,那么下
cin.get()
一个将不等待用户输入,而是从输入流缓冲区中取出一个字符。而且,这不会在控制台中显示。顺便说一下,Enter也是一个字符.在你的情况下, goto 可以省略,虽然很多人说这是一种不好的形式,但如果手臂是直的,那么这个就没有问题了。这是汇编程序中常用的 jmp 代码。它的使用非常简单,创建了一个标签,我们稍后可以使用 goto 跳转
一个简单的例子:如果客户端输入一个值 <= 0,那么我们跳转到 ErrorGO 代码部分,在这里我们被重新请求输入