21xrx.com
2024-12-22 17:05:16 Sunday
登录
文章检索 我的文章 写文章
C++如何控制输出颜色?
2023-07-09 01:54:17 深夜i     --     --
C++ 控制 输出 颜色

在C++中,我们可以使用控制台输出函数来输出数据到屏幕上。然而有时候,我们需要更改输出的颜色,以便于区分不同的输出信息,或者提高程序的可读性。下面将介绍如何在C++中控制输出的颜色。

在Windows操作系统下,我们可以使用Windows API中的SetConsoleTextAttribute函数来设置输出的颜色。该函数需要两个参数:句柄和属性值。句柄可以通过GetStdHandle函数获取。属性值是一个16位的整数,其中高4位表示背景色,低4位表示前景色。具体的颜色值可以通过颜色代码来获取,如下表所示:

| 颜色     | 前景色代码 | 背景色代码 |

|---------------|------------|------------|

| Black     | 0     | 0     |

| Blue     | 1     | 16     |

| Green     | 2     | 32     |

| Cyan     | 3     | 48     |

| Red      | 4     | 64     |

| Magenta    | 5     | 80     |

| Yellow    | 6     | 96     |

| LightGray   | 7     | 112    |

| DarkGray   | 8     | 128    |

| LightBlue   | 9     | 144    |

| LightGreen  | 10     | 160    |

| LightCyan   | 11     | 176    |

| LightRed   | 12     | 192    |

| LightMagenta | 13     | 208    |

| LightYellow  | 14     | 224    |

| White     | 15     | 240    |

例如,如果我们希望将输出文本的前景色设置为红色,那么我们可以使用以下代码:


HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hConsole, 4);

cout << "This text will appear in red";

如果我们还希望将背景色设置为蓝色,那么我们可以将属性值设置为21,即16+5(前景色为红色,背景色为蓝色):


HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hConsole, 21);

cout << "This text will appear in red on blue background";

在Linux系统下,我们可以使用ANSI转义码来设置颜色。具体而言,我们可以在输出文本之前插入相应的转义序列,即"\033[颜色代码m"。其中,颜色代码和上表中的颜色代码相同。例如,如果我们希望将输出文本的前景色设置为红色,那么我们可以使用以下代码:


cout << "\033[31mThis text will appear in red\033[0m";

同样地,在Linux系统下,我们可以将前景色和背景色进行混合。例如,如果我们还希望将背景色设置为蓝色,那么我们可以将转义序列更改为"\033[5;34m",其中5表示闪烁效果,34表示深蓝色的背景色:


cout << "\033[31;5;34mThis text will appear in red on blue background\033[0m";

以上就是在C++中控制输出颜色的方法。需要注意的是,在使用这些方法时,可能会对程序的跨平台兼容性造成影响。因此,在编写程序时,我们需要根据具体的情况,选择合适的方法来控制输出颜色。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复