在C++中设置控制台输出颜色需包含windows.h头文件,调用GetStdHandle获取输出句柄后,使用SetConsoleTextAttribute函数设置前景色和背景色组合,如12为亮红、236为红字黄底,最后应恢复默认颜色7,该方法仅适用于Windows平台。

在C++中设置控制台输出颜色,主要通过调用Windows API中的SetConsoleTextAttribute函数实现。这个方法适用于Windows平台的控制台程序,比如使用Visual Studio或Code::Blocks等编译器开发的命令行应用。
1. 包含必要的头文件
要使用控制台颜色功能,需要包含windows.h头文件,它提供了对Windows API的访问:
#include#include using namespace std;
2. 使用SetConsoleTextAttribute设置颜色
SetConsoleTextAttribute函数用于更改后续文本的显示颜色。它的第一个参数是控制台输出句柄,第二个参数是颜色属性值。
获取句柄的方法是调用GetStdHandle(STD_OUTPUT_HANDLE)。
立即学习“C++免费学习笔记(深入)”;
颜色由前景色(文字颜色)和背景色组合而成,常用的颜色常量如下:
- 0 = 黑色
- 1 = 深蓝
- 2 = 深绿
- 3 = 深青
- 4 = 深红
- 5 = 深紫
- 6 = 深黄
- 7 = 浅灰(默认)
- 8 = 深灰
- 9 = 亮蓝
- 10 = 亮绿
- 11 = 亮青
- 12 = 亮红
- 13 = 亮紫
- 14 = 亮黄
- 15 = 白色
例如,输出红色文字:
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 12); // 12代表亮红 cout << "这是红色文字" << endl;
3. 同时设置文字和背景颜色
可以通过将前景色和背景色的值相加来设置背景。例如,红色文字+黄色背景:
SetConsoleTextAttribute(hConsole, 12 + (14 << 4)); // 14<<4 表示背景色 // 或者直接写成 12 + 224 = 236 SetConsoleTextAttribute(hConsole, 236);
其中背景色需要左移4位(乘以16),因为高4位表示背景色,低4位表示前景色。
4. 恢复默认颜色
设置颜色后,后续所有输出都会使用该颜色。建议在结束时恢复为默认颜色(通常是浅灰色文字+黑色背景,即7):
SetConsoleTextAttribute(hConsole, 7);
完整示例:
#include#include using namespace std; int main() { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 10); cout << "绿色文字" << endl; SetConsoleTextAttribute(hConsole, 12); cout << "红色文字" << endl; SetConsoleTextAttribute(hConsole, 15 + (1 << 4)); // 白字蓝底 cout << "白色文字,蓝色背景" << endl; SetConsoleTextAttribute(hConsole, 7); // 恢复默认 return 0; }
基本上就这些。注意这种方法只在Windows控制台有效,Linux/macOS需使用ANSI转义序列。如果你写的是跨平台程序,要考虑不同系统的兼容处理。











