使用C ++在控制台中着色文本

我怎样才能用C ++写彩色文本到控制台? 也就是说,我怎样才能用不同的颜色来写不同的文字呢?

在控制台文本中添加一点颜色

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // you can loop k higher to see more color choices for(int k = 1; k < 255; k++) { // pick the colorattribute k you want SetConsoleTextAttribute(hConsole, k); cout << k << " I want to be nice today!" << endl; } 

替代文字

标准C ++没有“颜色”的概念。 所以你所要求的取决于操作系统。

对于Windows,您可以查看SetConsoleTextAttribute函数。

在* nix上,您必须使用ANSI转义序列。

假设您正在讨论Windows控制台窗口,请在MSDN Library文档中查找控制台function。

否则,或者更一般地说,这取决于控制台。 C ++库不支持颜色。 但是一个控制台处理库可能/将会支持颜色。 例如谷歌“ncurses颜色”。

对于连接的串行terminal和terminal仿真器,您可以通过输出“转义序列”来控制事物。 这些通常以ASCII 27(ASCII中的转义字符)开头。 有一个ANSI标准和很多定制scheme。

干杯&hth。,

你可以写这样的方法和调用


 HANDLE hConsole; hConsole = GetStdHandle(STD_OUTPUT_HANDLE); int col=12; // color your text in Windows console mode // colors are 0=black 1=blue 2=green and so on to 15=white // colorattribute = foreground + background * 16 // to get red text on yellow use 4 + 14*16 = 228 // light red on yellow would be 12 + 14*16 = 236 FlushConsoleInputBuffer(hConsole); SetConsoleTextAttribute(hConsole, col); cout << "Color Text"; SetConsoleTextAttribute(hConsole, 15); //set back to black background and white text 

我不确定你真正想要做什么,但是我的猜测是你想让你的C ++程序在控制台中输出彩色文本,对不对? 不知道Windows,但是在所有的Unices(包括Mac OS X)上,你只需要使用ANSI转义序列 。

这里的cplusplus例子是如何在控制台中使用颜色的一个例子。

最简单的方法是:

 #include <stdlib.h> system("Color F3"); 

其中“F”是背景颜色的代码,而3是文本颜色的代码。

乱搞一下,看看其他颜色组合:

 system("Color 1A"); cout << "Hello, what is your name?" << endl; system("Color 3B"); cout << "Hello, what is your name?" << endl; 

在Windows中,您可以在前景(文本)和背景上使用红色绿色和蓝色的任意组合。

 /* you can use these constants FOREGROUND_BLUE FOREGROUND_GREEN FOREGROUND_RED FOREGROUND_INTENSITY BACKGROUND_BLUE BACKGROUND_GREEN BACKGROUND_RED BACKGROUND_INTENSITY */ HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); std::cout << "I'm cyan! Who are you?" << std::endl; 

来源: https : //msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes

    Interesting Posts