cin, млин. стих
а этот кусок кода, вставленный между вызовами выводавывод флашиться?
ну там типа:
while(true) {
print кусок вывода
stdout.flush
проверка cin
}
cin.rdbuf->in_avail
. Я, например, не представляю, как добится желаемого поведения, не прибегая к платформенно зависимым штукам. А так в *nix видимо надо делать select на дескрипторе cin, а в Win - получать HANDLE, соответствующий cin и ждать на нем с помощью WaitFor*.
Вместо этого пробовал делать cin.sync но результат никакой.
На одном из MSDN форумов прочитал какое-то объяснение, почему in_avail равен нулю, и это типа правильно, и там еще такой кусок кода:
cout << cin.rdbuf->in_avail << endl; //выведет ноль
char c;
cin.get(c);
cout << cin.rdbuf->in_avail << endl; //выведет один
короче, совсем какое-то левое поведение, не устраивает (
Я, например, не представляю, как добится желаемого поведения, не прибегая к платформенно зависимым штукам.Жаль. В винде conio.h заюзал, в линуксе хотелось бы, конечно, найти что-то попроще, чем select.
вроде в винду портировано.
Не знаю, что это, но спасибо, посмотрю.
конечно, найти что-то попроще, чем selectА чего сложного-то?
найти что-то попроще, чем select.poll/epoll?
А вообще - в винде же вроде тоже есть select?
Он там вроде только для сокетов работает.
Оставить комментарий
erotic
Программа что-то там выводит, а этот кусок кода, вставленный между вызовами вывода, по идее должен проверять, не надоело ли юзеру на это смотреть и не нажал ли он ентер, и выйти, если нажал. Только cin.rdbuf->in_avail все время возвращает 0, хоть жопой на клавиатуру садись, и ничего в консоли не печатает, пока прога не закончит все выводить. А потом все разом, есессно, сваливается.
И эт все под виндой, прошу заметить.
Страуструп, конечно, предупреждал, что не все реализации in_avail одинаково полезны, но мля - что делать-то?