Форум программистов, компьютерный форум CyberForum.ru

Почему портится поток cin при использовании функции getline - C++

Восстановить пароль Регистрация
 
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
26.12.2011, 21:27     Почему портится поток cin при использовании функции getline #1
C++
1
2
3
char a[20];
cin.getline(a,5);
cin.clear();
При вводе свыше 5 символов после функции getline надо вызывать функцию clear() иначе поток cin не работает, почему так происходит? Пишу в VS2010
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2011, 21:27     Почему портится поток cin при использовании функции getline
Посмотрите здесь:

cin И getline C++
C++ cin.getline
Почему игнорируется cin.getline() в классе? C++
cin.getline() C++
C++ Ошибка при использовании getline для считывания строки из файлового потока
Не работает cin.getline при считывании строки большей буфера C++
При использовании getline ввод при Enter заканчивается только после пробела C++
Cin.getline() не работает при динамическом выделении памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,178
Завершенные тесты: 1
26.12.2011, 21:41     Почему портится поток cin при использовании функции getline #2
Цитата из Help
The first of these unformatted input functions returns getline(_Str, _Count, widen('\n')).

The second function extracts up to _Count - 1 elements and stores them in the array beginning at _Str. It always stores the string termination character after any extracted elements it stores. In order of testing, extraction stops:

At end of file.

After the function extracts an element that compares equal to _Delim, in which case the element is neither put back nor appended to the controlled sequence.

After the function extracts _Count - 1 elements.
т.е. getline считывает данные до символа \n, а записывает в данном случае не более 5 символов.
Оставшиеся символы не возвращаются обратно в поток и, с-но их прочитать нельзя.
Yandex
Объявления
26.12.2011, 21:41     Почему портится поток cin при использовании функции getline
Ответ Создать тему
Опции темы

Текущее время: 01:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru