cin, млин. стих

erotic

 		//if (cin.rdbuf->in_avail && cin.get == '\n')
// break;

Программа что-то там выводит, а этот кусок кода, вставленный между вызовами вывода, по идее должен проверять, не надоело ли юзеру на это смотреть и не нажал ли он ентер, и выйти, если нажал. Только cin.rdbuf->in_avail все время возвращает 0, хоть жопой на клавиатуру садись, и ничего в консоли не печатает, пока прога не закончит все выводить. А потом все разом, есессно, сваливается.
И эт все под виндой, прошу заметить.
Страуструп, конечно, предупреждал, что не все реализации in_avail одинаково полезны, но мля - что делать-то?

pitrik2

а этот кусок кода, вставленный между вызовами вывода
вывод флашиться?
ну там типа:
while(true) {
print кусок вывода
stdout.flush
проверка cin
}

psm-home

Там вроде хоть флаш, хоть нет, а поведения, которого хочет автор треда не будет. Достаточно погуглить по
cin.rdbuf->in_avail

. Я, например, не представляю, как добится желаемого поведения, не прибегая к платформенно зависимым штукам. А так в *nix видимо надо делать select на дескрипторе cin, а в Win - получать HANDLE, соответствующий cin и ждать на нем с помощью WaitFor*.

erotic

Я считаю, что stdout не имеет никакого отношения к stdin, за исключением того, что волею судьбы оба связаны с консолью.
Вместо этого пробовал делать cin.sync но результат никакой.
На одном из MSDN форумов прочитал какое-то объяснение, почему in_avail равен нулю, и это типа правильно, и там еще такой кусок кода:
 
cout << cin.rdbuf->in_avail << endl; //выведет ноль
char c;
cin.get(c);
cout << cin.rdbuf->in_avail << endl; //выведет один


короче, совсем какое-то левое поведение, не устраивает (

erotic

Я, например, не представляю, как добится желаемого поведения, не прибегая к платформенно зависимым штукам.
Жаль. В винде conio.h заюзал, в линуксе хотелось бы, конечно, найти что-то попроще, чем select.

yolki

ncurses - кошерная замена conio
вроде в винду портировано.

erotic

Не знаю, что это, но спасибо, посмотрю.

Papazyan

конечно, найти что-то попроще, чем select
А чего сложного-то?

shlyumper

найти что-то попроще, чем select.
poll/epoll?

erotic

Вспомнить надо, а так - ничего)
А вообще - в винде же вроде тоже есть select?

psm-home

Он там вроде только для сокетов работает.
Оставить комментарий
Имя или ник:
Комментарий: