45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|||||||||||
1 | |||||||||||
Как выполнять std::cin в LOOP ?19.02.2015, 19:03. Показов 2121. Ответов 7
Метки нет (Все метки)
Хочу сделать что то вроде командной строки.
1ый раз читает и выполняет нормально, но следующий раз вижу что ждет от меня ввода, но ни как не реагирует на него и 1 ядро CPU сразу поднимается на 100%
В чем может быть ошибка? Если инициализацию std::string cmd; убираю за пределы loop'a то следующий ввод он не ждет, а выводит несколько десятков раз предыдущую строку и после опять ждет ввод на 1 ядро от CPU
0
|
19.02.2015, 19:03 | |
Ответы с готовыми решениями:
7
Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream Как std::cin считает CTRL + C? Как исправить ошибку с std::cin Не работает std::cout || std::cin |
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
|
|
19.02.2015, 19:26 | 2 |
Путин, попробуйте почистить поток ввода.
Не по теме: Или запретите std::cin въезд на территорию России
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|||||||||||
19.02.2015, 19:36 [ТС] | 3 | ||||||||||
Гоблин-инженер, Пробовал вместо
Не по теме: :D
0
|
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
|
||||||
19.02.2015, 19:44 | 4 | |||||
Путин, я может проблемы не понял, но у меня подобный код выполняется без проблем:
1
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
||||||
19.02.2015, 20:03 [ТС] | 5 | |||||
Гоблин-инженер, ну да, скопировал и вставил - работает, скопировал в свой проект - 1 раз прочел верно, вернул true и сразу же откуда то прочитал еще что-то и вернул false...
0
|
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
|
|
19.02.2015, 20:05 | 6 |
Путин, могу предположить, что это может быть как-то связано с пробелами в командах. "tcp start" будет воспринято программой, как 2 значения: "tcp" и "start"
1
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|||||||||||
19.02.2015, 20:22 [ТС] | 7 | ||||||||||
Гоблин-инженер, Не тут все работает, нашел проблему в StartSockServer().
Он создает новый объект TCP, который уже плодит себе потоки и работает с ними. И если что-то не так, то я из TCP включая потоки пытаюсь сделать вывод в консоль:
Вывод в консоль срабатывает, но скорее всего из-за этого он уходит в себя с ядром CPU, но при этом потоки продолжают работать и выводить сообщения. Сейчас попробую убрать выводы в консоль из потоков, посмотрим что получится. На скрине мои команды "foo" и "bar", видно что на 1ую он ответил, а на 2ую и следующие нет. После ответа сразу 1 ядро CPU уходит.
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
19.02.2015, 21:36 [ТС] | 8 |
Ну да, как и предполагал... Убрал все выводы в консоль методом "Application::getInstance()->printInfo()"
и сразу все заработало. Это значит, что я не могу одновременно делать ввод и вывод в консоль юзая только 1 поток? Если я из потоков вывожу обычным std::cout то все работает. Добавлено через 31 минуту Нашел все таки тред который косячит, любой вывод в консоль из одного из тредов сразу нарушает всю работу... Добавлено через 32 минуты ну и как это обычно бывает, выяснилось что проблема была в логике приложения, исправил, работает Добавлено через 32 секунды Действительно, так и оказалось.
0
|
19.02.2015, 21:36 | |
19.02.2015, 21:36 | |
Помогаю со студенческими работами здесь
8
Как проигнорировать последовательность символов в std::cin? Как заставить std::cin распознавать префиксы? Как работает cin.peek, cin,get, cin.ignore, cin.clear? Как ввести несколько переменных через пробел (std::cin)? std::cin, eof не всегда принимается как признак конца файла Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |