下面的代码以彩色打印“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");
}
使用上述代码,终端将显示彩色文本,但当重定向到文件或管道时,将使用纯文本。