6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
|
||||||
1 | ||||||
cin.getline19.06.2011, 02:32. Показов 6413. Ответов 21
Метки нет (Все метки)
Здравствуйте.
Есть вот программа:
Спасибо.
0
|
19.06.2011, 02:32 | |
Ответы с готовыми решениями:
21
Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами Объясните работу методов cin.getline и cin.ignore Отличие функции cin.get и cin.getline |
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.06.2011, 02:43 | 2 |
При вводе чисел разделитель (коим в данном случае является символ конца строки) остаётся в потоке. Поэтому, при своём вызове функция getline обнаруживает его в потоке и считает что ввод данных уже закончен.
Самый простой (но не самый надёжный) способ избежать этого — добавить cin.ignore() после cin >> epsilon.
1
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 02:47 | 3 |
Перед cin.getline добавьте cin.get(), а то в потоке остаётся символ перевода строки, который и считывает getline, считает его за Enter и завершается.
Добавлено через 35 секунд Не по теме: Да что же я вечно опаздываю))
1
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
19.06.2011, 02:50 | 4 | |||||
оуууу
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 02:51 | 5 |
alex_x_x, не поможет, программа не закроется, но getline всё равно не выполнит то, что надо))
Добавлено через 33 секунды
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
19.06.2011, 03:02 | 6 |
Для этого есть удобный метод cin.sync(), и не надо никаких извращений.
0
|
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
|
|
19.06.2011, 03:05 [ТС] | 7 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 03:07 | 8 |
kazak, а где вы видите извращения? По мне, так в данном случае между get() и sync() разницы никакой.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.06.2011, 03:19 | 9 |
А по мне, так разница огромная. Потому как get и ignore работают, а cin.sync() нет! Ну или я не додумался как его использовать.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 03:24 | 10 |
grizlik78, перед cin.getline написать cin.sync(); ))
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
19.06.2011, 03:26 | 11 |
silent_1991, я пробовал. GCC 4.5.1, линукс.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 03:27 | 12 |
grizlik78, хм... cl нормально отработал, всё синхронизировалось, потоки очистились...
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
19.06.2011, 03:31 | 13 |
vs2010 sync нормально отработал.
0
|
silent_1991
|
19.06.2011, 03:33
#14
|
Не по теме: silentnuke, ну, собственно, её я и имел ввиду))
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
19.06.2011, 03:34 | 15 |
silent_1991,
Не по теме: а ну да, сорри туплю уже=)
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
19.06.2011, 03:38 | 16 | |||||
А вот такая строчка перед sync у вас что выдаёт? (если я правильно её написал)
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
19.06.2011, 03:40 | 17 |
grizlik78, а мне 1 выдаёт, как раз тот самый '\n', судя по всему...
0
|
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
|
|
19.06.2011, 03:41 | 18 |
grizlik78, 1 выдало.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|||||||||||
19.06.2011, 04:37 | 19 | ||||||||||
Забавно, g++ 4.5.2 из MinGW тоже выдаёт 0, но таки сбрасывает. Бага что ли...
в общем для меня пока переносимый вариант это
Добавлено через 50 минут Мда, нет в жизни счастья. Проблема обсуждалась 6 лет назад. К сожалению, это не бага.
В общем, обыкновенный cin.ignore() или cin.get() пока мой выбор.
1
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
19.06.2011, 14:45 | 20 |
Разница в любом случае есть.
Что если в этой строке пользователь сделает опечатку и введет пару букв?
0
|
19.06.2011, 14:45 | |
19.06.2011, 14:45 | |
Помогаю со студенческими работами здесь
20
Отличие getline() от cin.getline() getline(cin, str) и cin>> cin.getline и cin.ignore Cin вместо cin.getline Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |