Итак, я делал простую викторину для детей на C ++ (я действительно новичок в программировании). Я хотел, чтобы пользователь нажимал клавишу Enter после первого вопроса, и только после нажатия клавиши Enter второй вопрос виден. Но по ряду причин C ++ не ждет, когда пользователь введет вывод в оператор cin, и автоматически выводит следующий вопрос.
Вот код:
cout << "Q1. Which of these languages is not used to make Computer Software?" << endl;
cout << "a. Python" << endl;
cout << "b. Java" << endl;
cout << "c. C++" << endl;
cout << "d. HTML" << endl;
cout << "" << endl;
cin >> ans;
cout << "" << endl;
cout << "Press Enter to Continue";
cin.ignore();
Возможно, вы уже ввели «ввод» после предоставления некоторых данных для ans
, В этом случае cin.ignore()
прочтем «войти» и сразу вернемся. Поэтому вы хотели бы другой cin.ignore()
в ожидании еще одного «войти».
Скорее всего, вы вошли Войти после ответа / ввода (одним словом). Итак, когда вы нажимаете Войти, занимает анс строка как ввод и обрабатывает следующую новую строку как разделитель.
В результате, новая строка не читается и остается во входном буфере, который автоматически принимается как следующий ввод. То есть, cin.ignore () игнорируйте этот символ новой строки, и управление переходит к следующим инструкциям.
Чтобы исправить это, используйте cin.getline (ANS)/getline (cin, ans) вместо CIN или использовать другой cin.ignore () игнорировать ваш следующий Войти («Нажмите Enter, чтобы продолжить»).