Очистка терминала в Linux с кодом C ++ - PullRequest
29 голосов
/ 31 октября 2010

Хорошо, я изучал, как это сделать, но, скажем, у меня запущена программа, которая выводит на терминал целый бит, как бы я очистил экран из моей программы, чтобы я мог сохранить свою программуработает?

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

Я нашел что-тоэто работает, однако, я не уверен, что это такое или что он делает.

cout << "\033[2J\033[1;1H";

Это работает, но я понятия не имею, что это такое, если вы могли бы объяснить, чем я был бы очень признателенэто.

Ответы [ 3 ]

45 голосов
/ 31 октября 2010

Это управляющие коды ANSI. Первый (\033[2J) очищает весь экран (J) сверху вниз (2). Второй код (\033[1;1H) позиционирует курсор в строке 1, столбце 1.

Все экранирования ANSI начинаются с последовательности ESC [, имеют ноль или более параметров, ограниченных ; , и заканчиваются буквой команды ( J и H в вашем случае). \033 - восьмеричная последовательность в стиле C для escape-символа.

См. здесь для полного роуд-шоу.

10 голосов
/ 31 октября 2010

Вместо того, чтобы зависеть от конкретных escape-последовательностей, которые могут прерваться в неожиданных ситуациях (хотя согласиться с этим компромиссом можно, если это то, что вам нужно), вы можете просто сделать то же самое, что сделали бы в своей оболочке:*

std::system("clear");

Несмотря на то, что обычно system () следует избегать, для интерактивной пользовательской программы не важен ни дополнительный анализ оболочки, ни издержки процесса.В этом случае проблем с выходом из оболочки также не возникает.

Вы всегда можете выполнить команду fork / exec для вызова clear, если хотите избежать system ().Если вы уже используете [n] curses или другую библиотеку терминалов, используйте это.

0 голосов
/ 31 октября 2010

Для переносимости вы должны получить строку из возможности cl (clear) termcap (Очистить экран и курсор домой). (Или используйте std :: system («clear»), как сказал Роджер Пейт).

человек 3 termcap (в курсах)
человек 5 termcap
установить | grep TERMCAP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...