Почему после использования cin функции cin.get() и cin.getline() не работают, а последующие вызовы cin срабатывают?

125
10 марта 2021, 22:50

Насколько я знаю cin оставляет символ '\n' в потоке из-за чего последующие вызовы cin.get() и cin.getline() не будут срабатывать, поскольку они будут натыкаться на символ перевода строки и завершать свою работу. Для того, чтобы функции cin.get() и cin.getline() успешно работали после cin >> нужно "выбросить" '\n' из потока при помощи cin.get() или cin.ignore(numeric_limits<streamsize>::max(), '\n').

Вопрос: почему cin будет работать и без "очищения" потока от символа '\n'?

Т.е. я имею в виду, что этот код будет работать без cin.get() или cin.ignore():

    char str1[80], str2[80];
    cin >> str1;
    cin >> str2;

А этот нет:

    char str1[80], str2[80];
    cin >> str1;
    cin.getline(str2, 80);

Если я как-то непонятно изложил суть проблемы, говорите)

Answer 1

operator >> производит чтение с разделением по пробельным символам и при вызове будет сначала пропускать эти символы, пока не дойдет до текста. getline производит чтение до конца строки.

READ ALSO
onclick на теге &lt;p&gt;

onclick на теге <p>

Необходимо посадить событие с помощью атрибута onclick на тег <p>Объясните, пожалуйста, почему в данном случае функция не вызывается?

111
С# Как спарсить адреса изображений с классом со страницы сайта?

С# Как спарсить адреса изображений с классом со страницы сайта?

Мне нужно спарсить изображения определенного класса со страницы и разместить их в WinForms

106