如何使ANSI颜色代码在Windows CMD中工作? 如何在Windows CMD控制台中使用C++控制台应用程序获得ANSI转义代码来输出彩色终端输出?p>

如何使ANSI颜色代码在Windows CMD中工作? 如何在Windows CMD控制台中使用C++控制台应用程序获得ANSI转义代码来输出彩色终端输出?p>,c++,cmd,windows-console,ansi-colors,C++,Cmd,Windows Console,Ansi Colors,这就是我迄今为止所尝试的: #include <windows.h> #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #endif int main() { HANDLE h = GetStdHandle(STD_INPUT_HANDLE); SetConsoleMode(h, ENABLE_VIRTUAL_TERMI

这就是我迄今为止所尝试的:

 #include <windows.h>
 #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
 #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
 #endif

 int main()
 {
    HANDLE h = GetStdHandle(STD_INPUT_HANDLE);
    SetConsoleMode(h, ENABLE_VIRTUAL_TERMINAL_PROCESSING);
    printf("%c[%dm foo!\n", 0x1B, 32);              // 1
    printf("\e[31m foo \e[0m bar\n");               // 2
    printf("^\u0001b[31m foo \u0001b[0m bar\n");    // 3
    printf("^[[31m foo");                           // 4
    printf("\033[1;31m foo \e[0m bar\n");           // 5

 };
#包括
#ifndef启用虚拟终端处理
#定义启用虚拟终端处理0x0004
#恩迪夫
int main()
{
句柄h=GetStdHandle(标准输入句柄);
设置控制台模式(h,启用虚拟终端处理);
printf(“%c[%dm foo!\n”,0x1B,32);//1
printf(“\e[31m foo\e[0m bar\n”);//2
printf(“^\u0001b[31m foo\u0001b[0m bar\n”);//3
printf(“^[[31m foo”);//4
printf(“\033[1;31m foo\e[0m bar\n”);//5
};
>,在C++中,<代码> PROTF(“%C[%DHELAD.\N”,0x1B,32);< /C> >应该工作,但它不适用于我,它输出<代码> [32 MHLAD.< /COD> < /LI> >
  • printf(“\e[31m foo\e[0m bar”);
    应输出一个红色
    foo
    和一个默认
    bar
    ,但只打印
    ?[31m foo?[0m bar
  • \e
    替换为
    \u001b
    没有任何作用
  • 从cmd窗口复制功能字符串并在printf中使用
  • 使用不同的转义字符,
    printf(“\033[1;32m foo\e[0m bar”);

  • 我还使用
    printf(“foo”)测试了输出
    std::out请注意,这是终端显示程序输出的一项功能,无论该程序是用哪种编程语言实现的…@DevSolar-fair point,我已经调整了我的问题,试图让它更清楚一点。希望它现在更有意义。它们可能得到支持。it用户设置det这是唯一一种可以在所有Windows版本上使用标准API调用的技术。请注意,这是终端显示程序输出的一项功能,无论该程序是用哪种编程语言实现的…@DevSolar-fair point,我已经调整了我的问题以尝试nd让它更清楚一点。希望它现在更有意义。它们可能会被支持。it用户设置已确定,并且只在Windows 10的后续版本中使用。此技术是唯一一种使用标准API调用在所有Windows版本上工作的技术