21xrx.com
2024-09-20 00:40:41 Friday
登录
文章检索 我的文章 写文章
C++如何实现输出带颜色文字
2023-07-08 12:01:47 深夜i     --     --
C++ 输出 颜色文字

在C++编程语言中,输出带颜色的文字可以用ANSI转义序列来实现。

首先,需要将终端的输出设置为支持ANSI转义序列。在Windows系统下,可以使用SetConsoleMode函数来设置输出控制台的模式,如下所示:


#include <windows.h>

#include <iostream>

int main() {

  HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

  DWORD consoleMode;

  GetConsoleMode(consoleHandle, &consoleMode);

  SetConsoleMode(consoleHandle, consoleMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);

  std::cout << "\033[31mHello, World!\033[0m" << std::endl; // 输出红色的文字

  return 0;

}

上述代码中,先取得标准输出控制台的句柄,然后获取控制台的模式。接着,使用SetConsoleMode函数将ENABLE_VIRTUAL_TERMINAL_PROCESSING标志位设置为1,表示控制台已开启支持ANSI转义序列的模式。

然后就可以在输出任何字符串之前先输出ANSI转义序列,即\033[开始,\033[0m结束。其中,\033[后可跟1;31、0;32等数字,表示不同的颜色和控制台属性。

备注:颜色代码

|代码|颜色|

|:-:|----|

|30|黑色|

|31|红色|

|32|绿色|

|33|黄色|

|34|蓝色|

|35|紫色|

|36|青色|

|37|白色|

一些转义序列的示例:


std::cout << "\033[31mThis text is red.\033[0m\n";

std::cout << "\033[2;33mThis text is dark yellow.\033[0m\n";

std::cout << "\033[1;32mThis text is bright green.\033[0m\n";

注意,在Windows下只有一些Windows Terminal或者其他一些终端支持ANSI转义序列,否则将无法显示颜色效果。

总体上,使用ANSI转义序列,可以使输出的文本在控制台上拥有更加丰富的视觉效果,也让C++开发者可以更好地细分输出内容。

  
  

评论区

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