0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
||||||
1 | ||||||
Не работает getline();29.03.2012, 16:07. Показов 16783. Ответов 15
Метки нет (Все метки)
Всем доброго дня
Не работает кусочек кода:
Что делать?
0
|
29.03.2012, 16:07 | |
Ответы с готовыми решениями:
15
Не работает getline() не работает getline Не работает getline Не работает getline() |
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
29.03.2012, 16:19 | 2 |
я не вижу тут выполнения, это просто класс
0
|
Заблокирован
|
|
29.03.2012, 16:41 | 3 |
- всё должно работать, предположу что у тебя либо множественный ввод , тогда \n оставшееся от предыдущего ввода "портит нам жизнь" либо можно попробовать синхронизировать поток ввода
Попробуй код с красными строками, но лучше приведи код целиком, по обрывку сложно что либо сказать
1
|
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
||||||
29.03.2012, 16:43 [ТС] | 4 | |||||
Я изучаю С++ по книге, там синхронизации еще не было, так что надо как-нибудь без нее я думаю
Задача написать программу которая будет принимать до 100 значений имен и номеров работников:
0
|
Заблокирован
|
||||||
29.03.2012, 16:52 | 5 | |||||
Не по теме: daite_dve, где конструктор класса???Сейчас подправлю... Добавлено через 5 минут daite_dve, вот подправил
2
|
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
|
29.03.2012, 16:52 [ТС] | 6 |
0
|
Заблокирован
|
||||||
29.03.2012, 16:57 | 7 | |||||
daite_dve, смотри код выше, как это не надо конструктор
Вот ещё раз тело класса
0
|
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
|||||||||||||||||||||
29.03.2012, 17:07 [ТС] | 9 | ||||||||||||||||||||
Все заработало так как должно было после того как я добавил строку
А конструктор обязательно использовать? Без него все итак прекрасно заработало. P.S.: Я не стал переделывать полностью весь код, т.к. то что там у тебя Юр написано я даже не понимаю Мал я еще. Добавлено через 2 минуты да, странно что без
Добавлено через 3 минуты кстати, читал правила хорошего тона в программировании, там
0
|
Заблокирован
|
|
29.03.2012, 17:08 | 10 |
- в принципе можно конечно и без него, но тогда при объявлении переменной класса, его внутренние переменные будут без начальной инициализации, это может повлечь за собой печальные последствия
Посмотри сюда по поводу конструктора http://ru.wikipedia.org/wiki/К... мирование) http://programmersclub.ru/23/
1
|
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
|
29.03.2012, 17:28 [ТС] | 11 |
да, в серьезных программах лучше конструктор использовать, а то какой-нибудь параметр примет значение -стопятьсот, и все...
Тем не менее, вопрос с gelline(); остался открытым... это должно работать без .sync(); иначе зачем он тогда вообще нужен без встроенной синхронизации потоков?
0
|
Заблокирован
|
||||||
29.03.2012, 17:56 | 12 | |||||
- метод класса несколько отличен от вызова функции из основного модуля, поэтому нам и нужна синхронизация потока ввода, как вариант возможно стоит попробовать cin.sync() вписать в тело конструктора, даже самому интресно стало
Добавлено через 2 минуты daite_dve, я уже проверил и такая конструкция не позволяет вводить данные корректно
Добавлено через 5 минут daite_dve, смотри http://www.cplusplus.com/refer... ream/sync/
0
|
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
|
|
29.03.2012, 22:21 [ТС] | 13 |
да, мне кажется что тут дело именно в том что getline вызывается из метода, а не из main (ну или другой обычной функции)... где-то тут собака зарыта... из main ничего синкать не надо. Однакож в задании попросили написать метод который присвоит значения полям, а sync в книге (Лафоре) не упоминался, а задания там все четко по тому что написано..
Добавлено через 5 минут честно говоря мне еще сложно такие вещи читать, ничего не понимаю, ни потоки, ни :: мне такие вещи разжовывать надо Добавлено через 4 часа 19 минут итого, зачем getline() без sync пока неясно...
0
|
Заблокирован
|
|
30.03.2012, 09:51 | 14 |
Ну как не яснопри запуске main уже создаётся буферезированный синхронный поток ввода, а при вводе в методе класса мы организуем доп поток, которой буферезирован но работает несинхронно с main вот поэтому и нужна синхронизация.
:: операция расширения видимости прочитай здесь что это и с чем едят http://darkraha.com/rus/cpp/cpp04.php - если хочешь чему то научиться пробуй искать ответы на подобные вопросы и сам
2
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
30.03.2012, 14:29 | 15 |
Метод sync нужен для сброса буфера ввода, если в буфер остались какие-либо данные после выполнения предыдущех операций взятия из потока, когда для текущей операции требуется получение данных именно с клавиатуры (в частности).
Охинея какая-то.
0
|
|
30.03.2012, 15:22
Не работает getline();
#16
|
0
|
30.03.2012, 15:22 | |
Не работает getline() Не работает getline! Не работает getline не работает getline Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |