📅  最后修改于: 2023-12-03 15:38:31.113000             🧑  作者: Mango
在开发过程中,我们有时需要在控制台中以彩色文本打印出信息,以便更好地展示信息。本文介绍如何在C++中实现彩色文本的打印,涵盖了Windows和Linux两个操作系统平台。
Windows平台下的控制台显示是通过Win32 API来实现的。可以使用SetConsoleTextAttribute
函数来设置控制台输出的文本属性,进而实现彩色文本的显示。
以下是一个简单的示例代码:
#include <iostream>
#include <windows.h>
int main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY);
std::cout << "This is a red text." << std::endl;
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "This is a green text." << std::endl;
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
std::cout << "This is a blue text." << std::endl;
return 0;
}
需要注意的是,在Windows平台下,文本属性是通过一个16位的整型变量来设置的。在这个变量中,高4位是文本背景的颜色,低4位是文本前景的颜色。
常用的颜色值如下:
| 值 | 颜色 | | -- | ------------ | | 0 | Black | | 1 | Blue | | 2 | Green | | 3 | Cyan | | 4 | Red | | 5 | Magenta | | 6 | Brown | | 7 | LightGray | | 8 | DarkGray | | 9 | LightBlue | | 10 | LightGreen | | 11 | LightCyan | | 12 | LightRed | | 13 | LightMagenta | | 14 | Yellow | | 15 | White |
其中,加上FOREGROUND_INTENSITY
可以让颜色更加明亮。
在Linux平台下,可以通过ANSI escape codes来实现彩色文本的输出。在这个编码中,\033[
表示控制字符的开始,后面跟着一些数字和字符表示具体的控制行为。
下面是一个简单的示例代码:
#include <iostream>
#define RED_TEXT "\033[31m"
#define GREEN_TEXT "\033[32m"
#define BLUE_TEXT "\033[34m"
#define NORMAL_TEXT "\033[0m"
int main() {
std::cout << RED_TEXT << "This is a red text." << NORMAL_TEXT << std::endl;
std::cout << GREEN_TEXT << "This is a green text." << NORMAL_TEXT << std::endl;
std::cout << BLUE_TEXT << "This is a blue text." << NORMAL_TEXT << std::endl;
return 0;
}
在这个代码中,\033[31m
表示设置文本为红色,\033[32m
表示设置文本为绿色,\033[34m
表示设置文本为蓝色,\033[0m
表示恢复默认的文本属性。
需要注意的是,在某些终端软件中,ANSI escape codes可能不被支持,可能会出现奇怪的输出结果。因此,在实际项目中,建议使用其他方式来实现彩色文本的输出。
本文介绍了在C++中实现彩色文本的方法,分别涵盖了Windows和Linux两个平台。在实际项目中,可以根据不同的需求来选择不同的方法来实现彩色文本的输出。