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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
frostua
0 / 0 / 0
Регистрация: 07.11.2011
Сообщений: 27
#1

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

26.12.2011, 21:27. Просмотров 1089. Ответов 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
Посмотрите здесь:

C++ cin.getline
Почему игнорируется cin.getline() в классе? C++
getline(cin, ); C++
При использовании getline не работает eof C++
C++ Ошибка при использовании getline для считывания строки из файлового потока
Не работает cin.getline при считывании строки большей буфера C++
При использовании getline ввод при Enter заканчивается только после пробела C++
Cin.getline() не работает при динамическом выделении памяти C++
C++ Как запретить преобразование типов при использовании cin
C++ Почему при использовании getline( std::cin, str ) строка считывается не так, как ожидается?
Безконечый цикл при использовании cin и getline() C++
Почему при использовании функции scanf программа выдаёт ошибку? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6126 / 5729 / 1853
Регистрация: 18.12.2011
Сообщений: 14,641
Завершенные тесты: 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
Ответ Создать тему
Опции темы

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