Работа с буфером экрана консоли с++

Можете, пожалуйста, подсказать, как работать с буфером экрана консоли. Я знаю, что все водимые данные в консоль хранятся в буфере в виде двумерного массива, но как обратиться к нему, как получить из него данные, я не знаю. Помогите


Ответы (1 шт):

Автор решения: AR Hovsepyan

Как вы хотите работать, знаете только вы. Обращаться к буферу напрямую можно(а иногда нужно, если вы пишете код низкого уровня(например свой поток). Буфер потока в конкретно в С++ представлен классом basic_streambuf<char, char_traits<char>> и имеетcя определение специализации std::streambuf (для char), и он имеет много методов, и что для чего, можно почитать в документации. Но вот маленький пример:

char a, b;
cin >> a >> b;
//получим указатель на буфер потока ввода
std::streambuf* buf = cin.rdbuf();   
//вернем символ в буфер
buf->sungetc();
//посмотрим что за символ
char c = buf->sgetc();      

cout << a << b << c;
//теперь вводим содержимое буфера в буфер
//потока вывода(там у нас еще остался
//последный символ  буфера, плюс
//что введем до символа EOF
buf = cout.rdbuf();
cin >> buf;  
//введем "ab" выведим "abbb" и все что введем дальше

Внутреннее представление буфера зависит от реализации, а также есть языковая зависимость.

→ Ссылка