Если вы выясните, каковы возможности вашего терминала, вы можете просто записать их в стандартный вывод с помощью cout.
Если вы не уверены, с чего начать, вы можете поэкспериментировать следующим образом: По приглашениювведите man terminfo
, и вы можете получить список возможностей терминала.Попробуйте их с помощью tput
, чтобы увидеть, какие из них работают.Затем выясните, какие коды вам нужно напечатать, с чем-то вроде:
% tput el | od -t x1
0000000 1b 5b 4b
0000003
При отправке этих байтов на мой терминал выдается "clr_eol" ("el"), который очищается до конца строки.Поработайте, как переместить курсор на вашем терминале, как очистить линии, и все готово.
Видя, что вы используете gnome-терминал, вы можете сделать это, чтобы стереть 3 верхние строки: переместитькурсор к дому, стирание до конца строки, перемещение вниз, стирание до конца строки, перемещение вниз, стирание до конца строки.
Чтобы выяснить, что вам нужно напечатать:
% ( tput home ; tput el ; tput cud1 ; tput el ; tput cud1 ; tput el ; tput cud1 ; tput el ; tput cud1 ; tput el ) | od -t x1
0000000 1b 5b 48 1b 5b 4b 0a 1b 5b 4b 0a 1b 5b 4b 0a 1b
0000020 5b 4b 0a 1b 5b 4b
0000026
Отправка этих байтов (1B 5B 48 и т. Д.) В stdout (с cout) сделает то же самое из C ++.
Использование ncurses будет более переносимым, если вы не хотите его использовать, вы можетеобнаружите, что вы в конечном итоге реализуете его.