Работа с буфером экрана консоли с++
Можете, пожалуйста, подсказать, как работать с буфером экрана консоли. Я знаю, что все водимые данные в консоль хранятся в буфере в виде двумерного массива, но как обратиться к нему, как получить из него данные, я не знаю. Помогите
Ответы (1 шт):
Как вы хотите работать, знаете только вы. Обращаться к буферу напрямую можно(а иногда нужно, если вы пишете код низкого уровня(например свой поток). Буфер потока в конкретно в С++ представлен классом 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" и все что введем дальше
Внутреннее представление буфера зависит от реализации, а также есть языковая зависимость.