2010-02-27 83 views
18
std::cout << "blblabla... [done]" << std::endl; 

是否有可能使[done]处于另一种颜色,并且可能是粗体?我使用的是Windows 7C++ win32控制台中的颜色

回答

16

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

如果你正在使用Windows,你想SetConsoleTextAttribute

​​

您也可以组合值。

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

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

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

+0

我不知道为什么这个答案没有被接受。 – SwiftsNamesake 2017-08-14 20:13:56

+0

嗨,我想做一个控制台游戏,并想知道是否有一个特定的文章或页面描述所有这些相关的控制台功能来改变文本颜色和东西? – 2017-09-12 02:50:00

-1

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

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例子。

+5

不要忘记文档如何获取ANSI.SYS加载,它不是自动的。 – 2010-02-27 17:14:03

+9

这不适用于Windows – 2014-02-07 02:18:58

+2

这不适用于Windows开箱即用。 – Kyberias 2015-02-09 14:09:30

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!"; 
-2

一个快速的方法:包括#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 ...