Почему не это?
cin.ignore (getchar(),'\n');
Я не профессиональный программист, и вряд ли я могу считать себя любителем, но это мое небольшое усилие.
После тщательного изучения всех решений в Интернете, которые могут быть простыми, переносимыми и легкими для понимания (особенно для такого новичка, как я), я не увидел ничего действительно приемлемого (особенно для такого новичка, как я).
После многих неудачных попыток я написал эту строку. И это сработало!
И для меня это звучит как довольно элегантное решение.
Я имею в виду: это всего лишь одна строка кода, которую легко запомнить, для нее не требуется дополнительная объявленная переменная, вам не нужно слишком много абстрагировать, чтобы понять ее.
И это работает, в каждом сценарии я пробовал это.
Если это не хорошее решение, есть ли кто-нибудь достаточно хороший, чтобы объяснить это?
Спасибо вам всем за все ответы. Но либо я, либо вы упускаете суть.
Я спрашиваю не о том, работало ли опубликованное мной решение или нет, потому что оно работает!
По крайней мере, на моем компьютере и во всех исполняемых файлах, над которыми я работаю (я не хочу показаться упрямым, попробуйте сами отобрать у меня кредит. Пример того, как я его использую, приведен в конце).
И ни один из побочных эффектов, о которых вы говорите, не проявляется.
Строка отвечает на мой первый ввод, и она отвечает только на ввод, а не на «любой» символ.
Мои опасения связаны с тем, что я нигде не видел, чтобы он писал, и считаю себя беднейшим программистом, который удивил меня тем, что нашел решение с нуля.
short WaitForEnter ()
{
cout << "Press ENTER to continue\n";
cin.ignore (getchar(),'\n');
return 0;
}
Давайте посмотрим на определение игнорировать:
istream& ignore (streamsize n = 1, int delim = EOF);
Извлечение и удаление персонажей
Извлекает символы из входной последовательности и отбрасывает их до тех пор, пока не будет извлечено n символов или один из них не будет равен delim.
Функция также прекращает извлекать символы, если достигнут конец файла. Если это достигается преждевременно (перед извлечением n символов или поиском разделителя), функция устанавливает флаг eofbit.
Таким образом, ваша строка кода будет ждать, пока вы введете один символ в консоли (любой символ), а не введите (\ n);
Других решений пока нет …