在文本文件中重定向时 C++ 彩色输出文本

在文本文件中重定向时 C++ 彩色输出文本

下面的代码以彩色打印“Debug:”。

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

但是当我将其重定向到文本文件时,输出文件中写入以下内容:

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

应该对代码进行哪些更改,以便重定向的文本看起来像纯文本。

这是可能的,因为当我重定向 make/g++ 的彩色输出时,纯文本会写入输出文件中。

答案1

以下是解决方案:

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

使用上述代码,终端将显示彩色文本,但当重定向到文件或管道时,将使用纯文本。

相关内容