我有一个带有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()