Насколько я знаю 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);
Если я как-то непонятно изложил суть проблемы, говорите)
operator >> производит чтение с разделением по пробельным символам и при вызове будет сначала пропускать эти символы, пока не дойдет до текста. getline производит чтение до конца строки.
Продвижение своими сайтами как стратегия роста и независимости