Первое, что нужно понять, что C++ не имеет ни малейшего представления на экране, в качестве стандартной части языка. Стандартным выходом может быть файл, принтер и cout не знают разницы.
Сам экран «устройство», как правило, немного умнее и распознает некоторые команды. Наиболее широко реализуемыми из них являются «\ r» - возврат каретки и «\ n» - линия. «\ r» перемещает курсор в начало строки, а «\ n» переходит к следующей строке, но это не соответствует вашим потребностям, как вы уже пробовали.
Кажется, что единственный путь вперед - использовать проклятия (из которых ncurses - это только одна реализация, хотя стандартная в Linux). Он представляет вам виртуальный экран с различными командами для их обновления. Затем он принимает только измененные части и оптимизирует терминал.
Это просто пример типичной программы С помощью Ncurses, может быть стоит посмотреть:
#include <ncurses.h>
int main()
{
int ch;
initscr(); /* Start curses mode */
raw(); /* Line buffering disabled */
keypad(stdscr, TRUE); /* We get F1, F2 etc.. */
noecho(); /* Don't echo() while we do getch */
printw("Type any character to see it in bold\n");
ch = getch(); /* If raw() hadn't been called
* we have to press enter before it
* gets to the program */
printw("The pressed key is ");
attron(A_BOLD);
printw("%c", ch);
attroff(A_BOLD);
refresh(); /* Print it on to the real screen */
getch(); /* Wait for user input */
endwin(); /* End curses mode */
return 0;
}
Функция printw() записывает в «воображаемой» экраном. Он помещает материал в буфер и обновляет некоторые флаги, а также выполняет некоторые другие внутренние операции с ncurses. На самом деле он ничего не записывает на ваш реальный экран (консольное окно).
Вы можете сделать столько printw(), сколько хотите, но материал не отображается на реальном экране, пока ваша программа не сделает что-то еще, чтобы вызвать «мнимое» содержимое экранного буфера, чтобы перейти к реальному экран.
Одна вещь, которая заставляет реальный экран обновляться из буфера printw(), обновляется() (как показывает пример исходного кода).
На какой платформе вы стремитесь? В Linux ncurses будет приветствовать помощь в управлении экраном терминала. – aggsol
Я работаю на машине с Windows – IcyFlame
Не уверен, что консоль в окнах имеет такую функциональность, но вы можете попробовать использовать [PDCurses] (http://pdcurses.sourceforge.net/doc/index.html), который является портом Windows для библиотеки Curses –