C ++ win32控制台中的颜色

时间:2010-02-27 16:15:33

标签: c++

std::cout << "blblabla... [done]" << std::endl;

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

5 个答案:

答案 0 :(得分:21)

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

如果您使用的是Windows SetConsoleTextAttribute

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  // Get handle to standard output
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);

您还可以组合值。

  

应用程序可以组合使用   前景和背景常数   实现不同的颜色。例如,   以下组合导致   蓝色背景上的明亮青色文本。

     

FOREGROUND_BLUE | FOREGROUND_GREEN |   FOREGROUND_INTENSITY | BACKGROUND_BLUE

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

答案 1 :(得分:6)

是的,您只需发送standard escape sequence,例如

    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;

您还可以使用粗体与正常,彩色背景等。Wikipedia page on ANSI escape code包含详细信息,Bash-Prompt HOWTO包含示例。

答案 2 :(得分:3)

You can use this tiny libraries which I have used personally before。它非常易于使用并与标准流集成。它有一个清晰的控制台屏幕功能顺便说一句。这个例子来自我写的代码:

    std::cout << con::clr; // Clear the Intro Screen
// fg means the foreground
std::cout << std::endl << std::endl << con::fg_green
    << "\t\tFile Encrypted!";

答案 3 :(得分:-1)

是的,你可以使用系统();函数从command.com运行命令,其中一个是颜色。 颜色a会让你想要的绿色。 您还可以看到帮助选项颜色中的其他颜色/? 。 而对于大胆的事情,你可以使用ascii图表中的字符来做到这一点。 例如“\ n”是Newline。

答案 4 :(得分:-3)

快速方法:添加#include <stdlib.h>,然后在所需文字前添加system( "color 5B" );。所以它看起来像这样:

#include <stdlib.h>
std::cout << "blblabla..."<<std::endl;
system( "color 5B" );
std::cout<< "[done]" << std::endl;

您可以尝试不同的颜色:1A,2B,3C,4F ......