У меня есть следующий код в цикле for. Когда он проходит первый раз, он отлично работает. Однако, когда он снова запускается, он останавливается непосредственно перед cin.ignore, и мне нужно нажать клавишу ввода, прежде чем я могу ввести свой ввод. Любая причина, почему? Благодарю.«cin.ignore» нажмите дважды, чтобы продолжить
cin.ignore(100, '\n');
string input;
getline(cin, input);
EDIT:
Вот вся часть кода:
Обратите внимание, что вектор ресторанов имеет 16 строк в нем. А функция ifOddNumberOfRestaurants заключается в следующем:
void ifOddNumberOfRestaurants(vector<string> restaurants){
cout << "To begin the tournament, please add one more restaurant to the list: ";
cin.ignore(1000, '\n');
string newRestaurant;
getline(cin, newRestaurant);
restaurants.push_back(newRestaurant);
}
Код проблем:
else if (option == 5) {
int numberRestaurants = restaurants.size();
int evenOrOdd = numberRestaurants % 2;
if (evenOrOdd == 1){
ifOddNumberOfRestaurants(restaurants);
}
vector<string> battleRestaurants(restaurants);
int stop = 0;
while (stop == 0){
double half = battleRestaurants.size()/2;
int option1 = 0;
int option2 = 1;
int match = 1;
for(int i = 0; i < half; i++){
cout << "Match " << match << "/" << half << " --- " << battleRestaurants[option1] << " *OR* " << battleRestaurants[option2] << "? ";
match++;
cout << "\nBEFORE IGNORE\n";
cin.ignore(100, '\n');
cout << "\nAFTER IGNORE\n";
string winner;
getline(cin, winner);
if (winner == battleRestaurants[option1]){
battleRestaurants.erase(battleRestaurants.begin() + option2);
}
else if (winner == battleRestaurants[option2]){
battleRestaurants.erase(battleRestaurants.begin() + option1);
}
option1++;
option2++;
cout << "Postion of i: " << i << "\nPosition of Option 1: " << option1 << "\nPosition of Option 2: " << option2 << "\n" << endl;
printRestaurants(battleRestaurants);
}
}
}
Можете ли вы опубликовать весь код, чтобы я мог посмотреть на все это и посмотреть, в чем проблема. – Josh
Почему вы используете 'cin.ignore' в первую очередь? –
'cin.ignore (100, '\ n');' означает: "читать с' cin', пока мы не нажмем '\ n'. Если вы выполняете этот оператор и пока нет данных о 'cin', он будет ждать ввода типа материала, который имеет' \ n'. –