使用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