Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 18:29   #1
neurocore
 
Регистрация: 03.06.2012
Сообщений: 5
По умолчанию Ввод без задержек

Интересует такой вопрос: можно ли осуществлять ввод через стандартные потоки (средствами stdio или iostream) без задержек? То есть, когда встречается команда чтения строки из потока (будь то getline или getchar или fgets или cin >>), работа всей проги замирает, даже если в потоке-то ничего и не было. Можно ли отслеживать, когда нет ничего в потоке и продолжать работу дальше? Спасибо.
neurocore вне форума Ответить с цитированием
Старый 03.06.2012, 20:26   #2
Максай
Пользователь
 
Аватар для Максай
 
Регистрация: 21.07.2008
Сообщений: 40
По умолчанию

В общем случае для этого используется два потока выполнения - в одном потоке программа считывает пользовательский ввод, а в другом в это время исполняется основной алгоритм.
Максай вне форума Ответить с цитированием
Старый 03.06.2012, 21:15   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2neurocore
Цитата:
Можно ли отслеживать, когда нет ничего в потоке и продолжать работу дальше?
можно. мультиплексирование. функции select, pselect, poll
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 03.06.2012, 22:43   #4
neurocore
 
Регистрация: 03.06.2012
Сообщений: 5
По умолчанию

Спасибо тебе, добрый pproger, завтра читну) А то уже с месяце с три никто ничё не знает, наглухо. А ведь как-то же делают..)
neurocore вне форума Ответить с цитированием
Старый 04.06.2012, 19:16   #5
neurocore
 
Регистрация: 03.06.2012
Сообщений: 5
По умолчанию

Неожиданно, но спасла функция kbhit(). И никаких не надо потоков создавать и мультиплексировать
neurocore вне форума Ответить с цитированием
Старый 04.06.2012, 19:19   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2neurocore
ты спрашивал глобально про потоки, а не про буфер клавиатуры)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.06.2012, 19:35   #7
neurocore
 
Регистрация: 03.06.2012
Сообщений: 5
По умолчанию

Ан-нет, тут я неправ, думал сработает, когда стандартный поток ввода перехвачен. Не работает..

Зы: а вообще написать для cin'а нужный метод - посильная задача?

Последний раз редактировалось neurocore; 04.06.2012 в 19:41.
neurocore вне форума Ответить с цитированием
Старый 04.06.2012, 19:44   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2neurocore
что значит для cin? cin - это объект класса istream. наследуешься и пишешь что хочешь.
пс. с селектом я поторопился, в винде (если ты под нее пишешь) он работает только с сокетами
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.06.2012, 19:55   #9
neurocore
 
Регистрация: 03.06.2012
Сообщений: 5
По умолчанию

Да, конечно, для istream) Пишу в винде, решения для винды было бы достаточно. Да, я почитал про селект - везде линукс..) Или может проще перекопать исходники например fgets, getc, подправить малость?)

Кажется, нашёл) stdin->_cnt - хранит число символов в потоке)

Последний раз редактировалось neurocore; 04.06.2012 в 20:24.
neurocore вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод символа без эха Ратмир Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.11.2010 20:25
Динамический ввод массива (без ввода размера) Buddy_Guy Общие вопросы C/C++ 8 10.10.2010 22:22
Ввод с клавиатуры без остановки программы ActioNs Общие вопросы C/C++ 1 25.12.2008 04:40
Ввод даты без разделителей (311007) avtor101 Microsoft Office Excel 1 31.10.2007 19:57