Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

26.12.2011, 21:27. Просмотров 1190. Ответов 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 ) строка считывается не так, как ожидается? - C++
Цель программы: При вводе строки, подсчитывает количество гласных букв. Проблема: При вводе количества строк, сразу выдает 0 букв, а...

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

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

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

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

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

1
zss
Модератор
Эксперт С++
6685 / 6247 / 2083
Регистрация: 18.12.2011
Сообщений: 16,314
Завершенные тесты: 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() не работает при динамическом выделении памяти - C++
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все нормально. #include <iostream> using...

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

Не работает cin.getline при считывании строки большей буфера - C++
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более символов cin.getline(boofer, 3); перестаёт работать. Как я...

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


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

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

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