Я пытаюсь написать программу C++ для класса с использованием XCode. Одна из вещей, которую я хочу сделать, это просто очистить экран. Я рассмотрел, как это сделать, однако уловка заключается в том, что код должен запускаться как на компьютере Windows, так и на Macintosh. Я посмотрел на другие подобные вопросы, но ни один из ответов не помог мне. Я знаю, что нет "экрана", но я хочу, чтобы система очистила окно вывода. Я знаю, что system("clear");
команд system("clear");
делает то, что я хочу, но когда XCode тестирует программу, вместо очистки экрана он не печатает TERM Variable not set
Я пробовал открывать терминал и печатать на нем clear
и он действительно реагирует так, как я этого хочу, так почему же "терминал" внутри XCode делает то же самое? Я просто хочу, чтобы окно вывода в XCode отвечало, чтобы clear
то же, что и терминал.
Вот что я уже пробовал;
Я пошел в терминал и запустил echo $TERM
, на который терминал ответил xterm-256color
. Затем я перешел к XCode и открыл настройки "Схемы" и нашел параметр "Переменные среды" в разделе "Аргументы". Я добавил переменную (в пустой список) под названием TERM
и дал ей значение xterm-256color
. При повторном запуске программы на выходе отображается ¿[H¿[2J
в окне вывода, в котором TERM Variable not set
было напечатано значение TERM Variable not set
.
Последнее, в качестве напоминания, я не могу изменить исходный код так, как сейчас, или может вызвать ошибки при запуске программы на компьютере под управлением Windows.
Это не работает, потому что вы "лжете": терминал в Xcode не является xterm-256color
, но он dumb
терминал. Точнее, дисплей представляет собой NSTextStorage, который собирает stdout
и/или (в зависимости от целевого переключателя) stderr
.
Немой терминал не может очистить дисплей. Если вы хотите изменить это, вы можете написать плагин, похожий на Xcode-Colors, что добавит способность понимать цвета ansi.
Однако, если вы хотите, чтобы код просто запускался в Windows и OSX, вы можете придерживаться своей system("clear")
решений system("clear")
, так как она работает на "нормальном" OSX-терминале.