[英]newline character left in the cin.get() buffer
我正在使用cin.get(input).ignore(INT_MAX, '\\n');
在我的代碼中。 該語句在while循環中被調用,以在菜單中選擇一個選項。 盡管我對每次讀入的輸入都使用與cin.get()
鏈接的ignore,但是有時在cin緩沖區中會保留換行符,我應該按一個額外的“ Enter”進入while循環的常規過程以進行選擇一個選項。 我該怎么做才能解決這個問題?
int Menu::getChoice(int menuNum) // getChoice() returns users menu choice
{
int i = 0;
char input;
while(0 == i) // As long as users choice not valid
{
cout << "Make your choice: ";
cin.get(input).ignore(INT_MAX, '\n');
if (!cin.good())
{
cin.clear();
cin.ignore(INT_MAX, '\n');
}
i = atoi(&input);
if (menuNum == 1)
{
if (i < 1 || i > 2)
{
cout << "Not a valid choice!" << endl;
i = 0;
}
}
}
return i;
}
如果我理解正確,那么這個問題是,有時為了使代碼能夠通過cin,並獲得輸入的賦值,需要兩個換行符。 如果這是正確的,則與您更換以下產品相比:
cin.get(input).ignore(INT_MAX, '\n');
有了這個:
cin >> input;
該問題將得到解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.