Я считаю, что для пользовательского ввода std::getline
работает очень хорошо.
Вы можете использовать его, чтобы прочитать строку и просто отказаться от того, что она читает.
Проблема с такими вещами,
// Read a number:
std::cout << "Enter a number:";
std::cin >> my_double;
std::count << "Hit enter to continue:";
std::cin >> throwaway_char;
// Hmmmm, does this work?
в том случае, если пользователь вводит другой мусор, например «4.5 - о» слишком легко выйти из синхронизации и прочитать то, что пользователь написал в последний раз, прежде чем распечатать приглашение, которое ему нужно увидеть в следующий раз.
Если вы читаете каждую полную строку с помощью std::getline( std::cin, a_string )
, а затем анализируете возвращенную строку (например, с помощью istringstream или другого метода), гораздо проще синхронизировать напечатанные подсказки с чтением из std :: cin, даже в лицо искаженного ввода.