Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
frostua
0 / 0 / 2
Регистрация: 07.11.2011
Сообщений: 27
#1

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

26.12.2011, 21:27. Просмотров 1237. Ответов 1
Метки нет (Все метки)

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

Почему при использовании getline( std::cin, str ) строка считывается не так, как ожидается?
Цель программы: При вводе строки, подсчитывает количество гласных букв....

Безконечый цикл при использовании cin и getline()
Здравствуйте, Есть вот такой простенький кусок кода: string...

Отличие функции cin.get и cin.getline
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем,...

Почему игнорируется cin.getline() в классе?
Вот конструктор класса. При вызове конструктора создаётся односвязный список и...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get...

1
zss
Модератор
Эксперт С++
6956 / 6518 / 4138
Регистрация: 18.12.2011
Сообщений: 17,208
Завершенные тесты: 1
26.12.2011, 21:41 #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 символов.
Оставшиеся символы не возвращаются обратно в поток и, с-но их прочитать нельзя.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2011, 21:41
Привет! Вот еще темы с решениями:

Cin.getline() не работает при динамическом выделении памяти
Почему в таком коде cin.getline() работает не так как надо? Если очистить...

При множественном наследовании не работает getline(std::cin, ?)
Изучаю множественное наследование, так вот, нужно ввести два слова, но...

Не работает cin.getline при считывании строки большей буфера
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более...

При использовании getline не работает eof
while(!file.eof()) { getline(file,dv_tmp.name); file >>dv_tmp.profit...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru