![]() |
|
Модераторы: bsa |
![]()
|
|
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Всем привет. помогите с кодом:
Вопрос: 1) Скажите все шесть объектов cin работают в связке? т.е все они воспринимаются как один да? 2) Почему если ввесли такой текст: (812) - 123-456, то на печать выйдет полько 812 ? что не так. 3) Когда срабатывает cin.getline(one,4) , то он беоет из потока только 3 символа и один оставляет для '\0' так? ВСЕМ СПАСИБО. |
|||
|
||||
| jonie |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
getline будет "отрабатывать" после нажатия на enter,а не по окончании ввода трех символов.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
[QUOTE=jonie,7.10.2008, 00:07]
прошу прощения. Я имел ввиду все вызовы функций объекта cin, работают в связке? Объясните пожалуйста как это работает Задание такое ввести номер телефона в формате (812) 123-789, чтобы после присваивания соответствующим массивам групп цифр, на печать вышло 812123789. Это сообщение отредактировал(а) yngwie19 - 7.10.2008, 14:54 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
кто-нибудь подскажите, очень хочу разобраться
|
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
cin - объект, экземпляр класса istream (basic_istream специализированный char'ом)
он присоединен к потоку ввода - поэтому он один все операции с ним естественно связаны, т.к. любая операция может изменить его состояние. getline извлекает всю строку замените на get(... когда getline извлекает count-1 элемент, тогда она выставляет fail бит и все последующие операции вываливаются с fail поэтому после каждого извлечения надо сбрасывать этот флаг:
а вообще - как-то криво привязываться к формату посредством подсчета символов... Это сообщение отредактировал(а) J0ker - 8.10.2008, 02:04 |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Joker, спасибо, все работает.
Объясни мне пожалуйста. Все вызовы функций объекта cin, работают в связке? (т.е при запуске программы предлягается сразу ввести строку за один раз, а уж они ее обработают и запишут в соответствующие масиивы) Я правильно это понимаю? |
|||
|
||||
| J0ker |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
я не совсем понимаю что значит "в связке"
да первый вызов cin.ignore() останавливает программу и ожидает ввода строки. Как только строка введена с завершающим enter ( \n(\r) ) - начинается обработка строки. В твоем случае лучше все getline кроме последнего заменить на get - getline извлекает из потока конец строки (\n) если он встретится. Т.о. если ты введешь строку короче, то очередной getline извлечет конец строки и последующая операция извлечения снова остановит выполнение до ввода новой строки. Так что лучший вариант такой:
|
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |