Re[4]: Не могу найти ф-ию считывания со ст. входного потока(
От: Кодт Россия  
Дата: 14.05.09 17:45
Оценка:
Здравствуйте, niko715, Вы писали:

N>Дело в том, что мне нужно отследить,что поступление данных окончилось или прервалось.Ждать какогото символа — никанает, т.к. входным потоком этой тулзы могет являтся выходной поток какойнить предыдущей.

N>Напр:командная строка Far: type Предыдущий.txt > Эта_Тулза.exe

Тут есть 3 принципиально разных режима
— интерактивное чтение с консоли (вольны реализовать как угодно; обычно чтение построчное)
— чтение из потока (таймаутов быть не может, только конец файла; чтение строго посимвольное)
— чтение из pipe (в принципе, могут быть и таймауты)

Сишный рантайм реализует потоковые функции так, что они внутри себя различают — консоль это или нет. _isatty(_fileno(stdin)).

Никто (кроме лени) не мешает тебе вручную сделать собственный шелл с любым необходимым поведением — например, мгновенным вводом или ожиданием нужного количества символов.
Правда, вламываться в сишный рантайм — мучительно и непортабельно. (Можешь ради интереса хакнуть структуру FILE у stdin).

Проще написать собственный наследник std::streambuf и подсунуть его std::istream'у (хоть самому std::cin'у).
После чего все высокоуровневые функции ввода будут проходить через твои ручки, а ты уже с консолью напрямую вытворяй что хочешь.
(Если хочешь вытворять кроссплатформенно, то лучше делать это с помощью ***curses, но можно и прямо на Console API).
... << RSDN@Home 1.2.0 alpha 4 rev. 1207>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.