While循环连续执行两次



我有一个带有cin.get((提示符的while循环。

char ch;
while (true)
{
cout<<"Please type in a character:"<<endl;
cin.get(ch);
cout<<"ch = "<<ch<<endl; }

一旦字符被输入;输入";按下,循环执行两次。这是输出:

Please type in a character:
A
ch = A
Please type in a character:
ch = 
Please type in a character:

我该如何摆脱它?

感谢

在第一次迭代中,get()将返回用户的字符,但Enter(n(仍将在输入缓冲区中。在第二次迭代中,get()将返回该n。然后,在第三次迭代中,get()将阻止等待用户输入新字符。

您需要从输入缓冲区中丢弃n,例如:

char ch;
do
{
cout << "Please type in a character:" << endl;
cin.get(ch);
cout << "ch = " << ch << endl;
if ((ch != 'n') && (cin.peek() == 'n'))
cin.ignore();
}
while (true);

或者,只需使用operator>>,它跳过前导空格,包括n,例如:

char ch;
do
{
cout << "Please type in a character:" << endl;
cin >> ch;
cout << "ch = " << ch << endl;
}
while (true);

使用

cin.ignore()

之后

cin.get()

相关内容

  • 没有找到相关文章

最新更新