C++ win32控制台中的颜色

ton*_*ony 18 c++

std::cout << "blblabla... [done]" << std::endl;
Run Code Online (Sandbox Code Playgroud)

是否可以制作[done]另一种颜色,并且可能大胆?我正在使用Windows 7

Bri*_*ndy 21

这取决于您使用的操作系统.

如果您正在使用Windows,则需要SetConsoleTextAttribute:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  // Get handle to standard output
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
Run Code Online (Sandbox Code Playgroud)

您还可以组合值.

应用程序可以组合前景和背景常量以实现不同的颜色.例如,以下组合在蓝色背景上产生明亮的青色文本.

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

然后,您可以使用WriteFileWriteConsole实际编写控制台.


Dir*_*tel 5

是的,您只需发送一个标准的转义序列,例如

    const char* green = "\033[0;32m";
    const char* white = "\033[0;37m";
    const char* red   = "\033[0;31m";
    double profit = round(someComplicatedThing());
    std::cout << (profit < 0 ? red : (profit > 0 ? green : white))
              << "Profit is " << profit << white << std::endl;
Run Code Online (Sandbox Code Playgroud)

您还可以获得粗体与正常,彩色背景等.ANSI转义码上维基百科页面有详细信息,Bash-Prompt HOWTO有示例.

  • 不要忘记记录如何加载ANSI.SYS,它不是自动的. (5认同)
  • 这在开箱即用的Windows上不起作用. (3认同)