как на с++ написать что-то вроде
istream &operator(istream&,char&);
чтоб с cin вводило все сразу без буферизации?
на с выглядит так:
#include <stdio.h>
#include <fcntl.h>
#include <termio.h>
char ReadKey(void)
{
struct termio port; //это чтоб управлять терминалом
struct termio save; //это чтоб потом восстановить то че испортили
char key;
ioctl(0,TCGETA,&save); //получ. текущие установки терминала
port=save;
port.c_lflag=0; //чтоб не ждал /n
//если этот флаг установлен в ненулевое значение то при нажатии
//любой клавиши она сравнивается с управляющей и если совпадает
//то вызывается сигнал.
//а если сигнала нет то read и не ждет /n
ioctl(0,TCSETAW,&port); //устанавливаем свои параметры терминала
read(0, &key, 1);
ioctl(0,TCSETAW,&save);//восстанавливаем старые установки
return key;
}
iostream
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
-
- Сообщения: 4
- Зарегистрирован: 25 июл 2004, 15:28
Русским языком, тебе нужно cin без буферизации? Это решается средствами STL, описано в Страуструпе в разделе про Потоки.
Белые начинают и выигрывают.
Kornilov Matwey писал(а):Русским языком, тебе нужно cin без буферизации? Это решается средствами STL, описано в Страуструпе в разделе про Потоки.
да, это мне и нужно.
если Вам не сложно напиши поподробнее как это делается либо дай линк на данную книгу на русском.
-
- Сообщения: 4
- Зарегистрирован: 25 июл 2004, 15:28
Ничего более конкретного сказать не могу
сам никогда не делал.
Книга называется Язык Программирования C++, специальное издание, автор Бьерн Страуструм, из-во БИНОМ.
Действовать нужно через буфер std::streambuf прикрученный к std::cin.
Несколько цитат...
"Синхронизация потока istream и буфера осуществляется при помощи sync()"
"Функция readsome() является операицей нижнего уровня, которая позволяет посмотреть, есть ли в потоке символы для чтения. Это может очень пригодиться, когда нежелательно ждать ввода, например с клавиатуры."
"Вызов in_avail() используется для того, чтобы посмотреть, сколько доступных символов в буфре. Это может пригодиться, чтобы не ждать ввода."

Книга называется Язык Программирования C++, специальное издание, автор Бьерн Страуструм, из-во БИНОМ.
Действовать нужно через буфер std::streambuf прикрученный к std::cin.
Несколько цитат...
"Синхронизация потока istream и буфера осуществляется при помощи sync()"
"Функция readsome() является операицей нижнего уровня, которая позволяет посмотреть, есть ли в потоке символы для чтения. Это может очень пригодиться, когда нежелательно ждать ввода, например с клавиатуры."
"Вызов in_avail() используется для того, чтобы посмотреть, сколько доступных символов в буфре. Это может пригодиться, чтобы не ждать ввода."
Белые начинают и выигрывают.