Цветной синтезируемый текст C++ при перенаправлении в текстовом файле

Ниже кода печатает "Отладку": в цвете.

printf("\033[1;36mDebug:\033[0m\n");

но когда я перенаправляю к текстовому файлу, следующее записано в файл:

<0x1b>[1;36mDebug:[0m<0x1b>

Какие изменения в коде должны быть сделаны так, чтобы перенаправленный текст был похож на простой текст.

Это должно быть возможно, потому что, когда я перенаправляю цветной вывод make/g ++, простой текст записан в файл.

0
задан 3 March 2020 в 15:27

1 ответ

Ниже решение:

if (isatty(STDOUT_FILENO)) // STDERR_FILENO for fprintf(stderr, str);
{
    printf("\033[1;36mDebug:\033[0m\n");
}
else
{
    printf("Debug:\n");
}

Используя вышеупомянутый код терминал покажет цветной текст, но при перенаправлении в файл или канал простой текст будет использоваться.

0
ответ дан 17 March 2020 в 00:09

Другие вопросы по тегам:

Похожие вопросы: