如何将彩色文本输出到Linux终端?

如何将彩色字符打印到支持彩色字符的Linux终端?

如何判断终端是否支持颜色码?

360997 次浏览

你需要输出ANSI颜色代码。注意,并非所有终端都支持此功能;如果不支持颜色序列,就会显示垃圾。

例子:

 cout << "\033[1;31mbold red text\033[0m\n";

这里,\033是ESC字符,ASCII 27。它后面跟着[,然后是0个或多个由;分隔的数字,最后是字母m。这些数字描述了从那时起要切换到的颜色和格式。

前景色和背景色的代码如下:

         foreground background
black        30         40
red          31         41
green        32         42
yellow       33         43
blue         34         44
magenta      35         45
cyan         36         46
white        37         47

此外,你可以使用这些:

reset             0  (everything back to normal)
bold/bright       1  (often a brighter shade of the same colour)
underline         4
inverse           7  (swap foreground and background colours)
bold/bright off  21
underline off    24
inverse off      27

有关其他不太广泛支持的代码,请参阅维基百科的表格


要确定您的终端是否支持颜色序列,请读取环境变量TERM的值。它应该指定所使用的特定终端类型(例如vt100gnome-terminalxtermscreen,…)然后在terminfo数据库;检查colors能力。

你可以使用转义序列,如果你的终端支持的话。例如:

echo \[\033[32m\]Hello, \[\033[36m\]colourful \[\033[33mworld!\033[0m\]

最好的方法是使用ncurses库——尽管如果你只是想输出一个简单的彩色字符串,这可能是一个大锤来敲坚果

在你输出任何你需要的颜色之前,确保你在一个终端:

[ -t 1 ] && echo 'Yes I am in a terminal'  # isatty(3) call in C

然后你需要检查终端能力,如果它支持颜色

在有terminfo (基于Linux)的系统上,您可以获得支持的颜色数量为

Number_Of_colors_Supported=$(tput colors)

在带有termcap (基于BSD)的系统上,您可以获得支持的颜色数量为

Number_Of_colors_Supported=$(tput Co)

然后做出决定:

[ ${Number_Of_colors_Supported} -ge 8 ] && {
echo 'You are fine and can print colors'
} || {
echo 'Terminal does not support color'
}

BTW,不要像之前ESC字符那样使用着色。 使用对终端功能的标准调用,将为您指定特定终端支持的正确颜色 基于BSD的

fg_black="$(tput AF 0)"
fg_red="$(tput AF 1)"
fg_green="$(tput AF 2)"
fg_yellow="$(tput AF 3)"
fg_blue="$(tput AF 4)"
fg_magenta="$(tput AF 5)"
fg_cyan="$(tput AF 6)"
fg_white="$(tput AF 7)"
reset="$(tput me)"
基于Linux
fg_black="$(tput setaf 0)"
fg_red="$(tput setaf 1)"
fg_green="$(tput setaf 2)"
fg_yellow="$(tput setaf 3)"
fg_blue="$(tput setaf 4)"
fg_magenta="$(tput setaf 5)"
fg_cyan="$(tput setaf 6)"
fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"
使用
echo -e "${fg_red}  Red  ${fg_green} Bull ${reset}"

这是一个老主题,但我编写了一个类,其中包含嵌套子类和由简单C宏定义的颜色静态成员。

我从dreamincode.net中由用户no2pencil从这篇文章C程序设计中的彩色文本中获得了color函数。

我这样做是为了能够像这样使用std::cout流中的静态常量:

cout << zkr::cc::fore::red << "This is red text. "
<< zkr::cc::console << "And changing to console default colors, fg, bg."
<< endl;

类和测试程序的源代码可以下载在这里

cc::console将重置为控制台默认颜色和属性,cc::underline将下划线文本,这在putty上工作,我已经测试了测试程序。

颜色:

black
blue
red
magenta
green
cyan
yellow
white


lightblack
lightblue
lightred
lightmagenta
lightgreen
lightcyan
lightyellow
lightwhite

它可以用于cc静态类的foreback静态子类。

编辑2017

为了更实用,我在这里添加了类代码。

颜色代码宏:

#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"

main color函数定义屏幕的颜色或属性:

char *cc::color(int attr, int fg, int bg)
{
static char command[13];


/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
return command;
}

ccolor.h

#include <stdio.h>


#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"


namespace zkr
{
class cc
{
public:


class fore
{
public:
static const char *black;
static const char *blue;
static const char *red;
static const char *magenta;
static const char *green;
static const char *cyan;
static const char *yellow;
static const char *white;
static const char *console;


static const char *lightblack;
static const char *lightblue;
static const char *lightred;
static const char *lightmagenta;
static const char *lightgreen;
static const char *lightcyan;
static const char *lightyellow;
static const char *lightwhite;
};


class back
{
public:
static const char *black;
static const char *blue;
static const char *red;
static const char *magenta;
static const char *green;
static const char *cyan;
static const char *yellow;
static const char *white;
static const char *console;


static const char *lightblack;
static const char *lightblue;
static const char *lightred;
static const char *lightmagenta;
static const char *lightgreen;
static const char *lightcyan;
static const char *lightyellow;
static const char *lightwhite;
};


static char *color(int attr, int fg, int bg);
static const char *console;
static const char *underline;
static const char *bold;
};
}

ccolor.cpp

#include "ccolor.h"


using namespace std;


namespace zkr
{
enum Color
{
Black,
Red,
Green,
Yellow,
Blue,
Magenta,
Cyan,
White,
Default = 9
};


enum Attributes
{
Reset,
Bright,
Dim,
Underline,
Blink,
Reverse,
Hidden
};


char *cc::color(int attr, int fg, int bg)
{
static char command[13];
/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
return command;
}


const char *cc::console = CC_CONSOLE_COLOR_DEFAULT;
const char *cc::underline = CC_ATTR(4);
const char *cc::bold = CC_ATTR(1);


const char *cc::fore::black = CC_FORECOLOR(30);
const char *cc::fore::blue = CC_FORECOLOR(34);
const char *cc::fore::red = CC_FORECOLOR(31);
const char *cc::fore::magenta = CC_FORECOLOR(35);
const char *cc::fore::green = CC_FORECOLOR(92);
const char *cc::fore::cyan = CC_FORECOLOR(36);
const char *cc::fore::yellow = CC_FORECOLOR(33);
const char *cc::fore::white = CC_FORECOLOR(37);
const char *cc::fore::console = CC_FORECOLOR(39);


const char *cc::fore::lightblack = CC_FORECOLOR(90);
const char *cc::fore::lightblue = CC_FORECOLOR(94);
const char *cc::fore::lightred = CC_FORECOLOR(91);
const char *cc::fore::lightmagenta = CC_FORECOLOR(95);
const char *cc::fore::lightgreen = CC_FORECOLOR(92);
const char *cc::fore::lightcyan = CC_FORECOLOR(96);
const char *cc::fore::lightyellow = CC_FORECOLOR(93);
const char *cc::fore::lightwhite = CC_FORECOLOR(97);


const char *cc::back::black = CC_BACKCOLOR(40);
const char *cc::back::blue = CC_BACKCOLOR(44);
const char *cc::back::red = CC_BACKCOLOR(41);
const char *cc::back::magenta = CC_BACKCOLOR(45);
const char *cc::back::green = CC_BACKCOLOR(42);
const char *cc::back::cyan = CC_BACKCOLOR(46);
const char *cc::back::yellow = CC_BACKCOLOR(43);
const char *cc::back::white = CC_BACKCOLOR(47);
const char *cc::back::console = CC_BACKCOLOR(49);


const char *cc::back::lightblack = CC_BACKCOLOR(100);
const char *cc::back::lightblue = CC_BACKCOLOR(104);
const char *cc::back::lightred = CC_BACKCOLOR(101);
const char *cc::back::lightmagenta = CC_BACKCOLOR(105);
const char *cc::back::lightgreen = CC_BACKCOLOR(102);
const char *cc::back::lightcyan = CC_BACKCOLOR(106);
const char *cc::back::lightyellow = CC_BACKCOLOR(103);
const char *cc::back::lightwhite = CC_BACKCOLOR(107);
}

在OSX shell上,这为我工作(包括“红色文本”前面的2个空格):

$ printf "\e[033;31m  red text\n"
$ echo "$(tput setaf 1)  red text"

基础知识

我写了一个c++类,可以用来设置输出的前景色和背景色。这个示例程序是打印This ->word<- is red.并将其格式化以便word的前景色为红色的示例。

#include "colormod.h" // namespace Color
#include <iostream>
using namespace std;
int main() {
Color::Modifier red(Color::FG_RED);
Color::Modifier def(Color::FG_DEFAULT);
cout << "This ->" << red << "word" << def << "<- is red." << endl;
}

#include <ostream>
namespace Color {
enum Code {
FG_RED      = 31,
FG_GREEN    = 32,
FG_BLUE     = 34,
FG_DEFAULT  = 39,
BG_RED      = 41,
BG_GREEN    = 42,
BG_BLUE     = 44,
BG_DEFAULT  = 49
};
class Modifier {
Code code;
public:
Modifier(Code pCode) : code(pCode) {}
friend std::ostream&
operator<<(std::ostream& os, const Modifier& mod) {
return os << "\033[" << mod.code << "m";
}
};
}

先进的

您可能希望向该类添加其他特性。例如,可以添加洋红色,甚至像黑体这样的样式。要做到这一点,只需在Code枚举中添加另一个条目。是一个很好的参考。

试试我的header,这里有一个快速简单的方法来给文本上色:Aedi的彩色头

< br >

Escape-Sequence-Color-Header

在Unix中使用c++为输出着色!!

< br >

文本属性选项:

ATTRIBUTES_OFF, BOLD, UNDERSCORE, BLINK, REVERSE_VIDEO, CONCEALED

< br >

颜色选择:

BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE

< br >

格式:

通用格式,在$变量$中包含你想要的值

COLOR_$Foreground_Color$_$Background_Color$
COLOR_$Text_Attribute$_$Foreground_Color$_$Background_Color$
COLOR_NORMAL  // To set color to default

如。

COLOR_BLUE_BLACK // Leave Text Attribute Blank if no Text Attribute appied
COLOR_UNDERSCORE_YELLOW_RED
COLOR_NORMAL

< br >

用法:

只是用来在输出文本和之前输出你想要的颜色 在输出文本后再次使用,将颜色设置为正常

cout << COLOR_BLUE_BLACK << "TEXT" << COLOR_NORMAL << endl;
cout << COLOR_BOLD_YELLOW_CYAN << "TEXT" << COLOR_NORMAL << endl;
正如其他人所述,您可以使用转义字符。 你可以使用我的头来使它更简单:

#ifndef _COLORS_
#define _COLORS_


/* FOREGROUND */
#define RST  "\x1B[0m"
#define KRED  "\x1B[31m"
#define KGRN  "\x1B[32m"
#define KYEL  "\x1B[33m"
#define KBLU  "\x1B[34m"
#define KMAG  "\x1B[35m"
#define KCYN  "\x1B[36m"
#define KWHT  "\x1B[37m"


#define FRED(x) KRED x RST
#define FGRN(x) KGRN x RST
#define FYEL(x) KYEL x RST
#define FBLU(x) KBLU x RST
#define FMAG(x) KMAG x RST
#define FCYN(x) KCYN x RST
#define FWHT(x) KWHT x RST


#define BOLD(x) "\x1B[1m" x RST
#define UNDL(x) "\x1B[4m" x RST


#endif  /* _COLORS_ */

使用header的宏的一个例子可以是:

#include <iostream>
#include "colors.h"
using namespace std;


int main()
{
cout << FBLU("I'm blue.") << endl;
cout << BOLD(FBLU("I'm blue-bold.")) << endl;
return 0;
}

enter image description here

我使用下面的解决方案,它非常简单和优雅,可以很容易地粘贴到源代码中,并在Linux/Bash上工作:

const std::string red("\033[0;31m");
const std::string green("\033[1;32m");
const std::string yellow("\033[1;33m");
const std::string cyan("\033[0;36m");
const std::string magenta("\033[0;35m");
const std::string reset("\033[0m");


std::cout << "Measured runtime: " << yellow << timer.count() << reset << std::endl;

你可以使用ANSI颜色代码。

使用这些函数。

enum c_color{BLACK=30,RED=31,GREEN=32,YELLOW=33,BLUE=34,MAGENTA=35,CYAN=36,WHITE=37};
enum c_decoration{NORMAL=0,BOLD=1,FAINT=2,ITALIC=3,UNDERLINE=4,RIVERCED=26,FRAMED=51};
void pr(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m";
}


void prl(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m"<<endl;
}

从我的理解,一个典型的ANSI颜色代码

"\033[{FORMAT_ATTRIBUTE};{FORGROUND_COLOR};{BACKGROUND_COLOR}m{TEXT}\033[{RESET_FORMATE_ATTRIBUTE}m"

由(名称和编解码器)组成

  • < p >格式属性

     { "Default", "0" },
    { "Bold", "1" },
    { "Dim", "2" },
    { "Italics", "3"},
    { "Underlined", "4" },
    { "Blink", "5" },
    { "Reverse", "7" },
    { "Hidden", "8" }
    
  • < p > FORGROUND颜色

     { "Default", "39" },
    { "Black", "30" },
    { "Red", "31" },
    { "Green", "32" },
    { "Yellow", "33" },
    { "Blue", "34" },
    { "Magenta", "35" },
    { "Cyan", "36" },
    { "Light Gray", "37" },
    { "Dark Gray", "90" },
    { "Light Red", "91" },
    { "Light Green", "92" },
    { "Light Yellow", "93" },
    { "Light Blue", "94" },
    { "Light Magenta", "95" },
    { "Light Cyan", "96" },
    { "White", "97" }
    
  • < p >背景颜色

     { "Default", "49" },
    { "Black", "40" },
    { "Red", "41" },
    { "Green", "42" },
    { "Yellow", "43" },
    { "Blue", "44" },
    { "Megenta", "45" },
    { "Cyan", "46" },
    { "Light Gray", "47" },
    { "Dark Gray", "100" },
    { "Light Red", "101" },
    { "Light Green", "102" },
    { "Light Yellow", "103" },
    { "Light Blue", "104" },
    { "Light Magenta", "105" },
    { "Light Cyan", "106" },
    { "White", "107" }
    
  • < p >文本

  • RESET FORMAT属性

     { "All", "0" },
    { "Bold", "21" },
    { "Dim", "22" },
    { "Underlined", "24" },
    { "Blink", "25" },
    { "Reverse", "27" },
    { "Hidden", "28" }
    

有了这些信息,就很容易给字符串上色“我是香蕉!”前景色为“黄色”;背景色"绿色"像这样

"\033[0;33;42mI am a Banana!\033[0m"

或者使用c++库彩色化

auto const& colorized_text = color::rize( "I am a banana!", "Yellow", "Green" );
std::cout << colorized_text << std::endl;

FORMAT属性的更多示例hereenter image description here

gon1332头文件的扩展版本:

//
//  COLORS.h
//
//  Posted by Gon1332 May 15 2015 on StackOverflow
//  https://stackoverflow.com/questions/2616906/how-do-i-output-coloured-text-to-a-linux-terminal#2616912
//
//  Description: An easy header file to make colored text output to terminal second nature.
//  Modified by Shades Aug. 14 2018


// PLEASE carefully read comments before using this tool, this will save you a lot of bugs that are going to be just about impossible to find.
#ifndef COLORS_h
#define COLORS_h


/* FOREGROUND */
// These codes set the actual text to the specified color
#define RESETTEXT  "\x1B[0m" // Set all colors back to normal.
#define FOREBLK  "\x1B[30m" // Black
#define FORERED  "\x1B[31m" // Red
#define FOREGRN  "\x1B[32m" // Green
#define FOREYEL  "\x1B[33m" // Yellow
#define FOREBLU  "\x1B[34m" // Blue
#define FOREMAG  "\x1B[35m" // Magenta
#define FORECYN  "\x1B[36m" // Cyan
#define FOREWHT  "\x1B[37m" // White


/* BACKGROUND */
// These codes set the background color behind the text.
#define BACKBLK "\x1B[40m"
#define BACKRED "\x1B[41m"
#define BACKGRN "\x1B[42m"
#define BACKYEL "\x1B[43m"
#define BACKBLU "\x1B[44m"
#define BACKMAG "\x1B[45m"
#define BACKCYN "\x1B[46m"
#define BACKWHT "\x1B[47m"


// These will set the text color and then set it back to normal afterwards.
#define BLK(x) FOREBLK x RESETTEXT
#define RED(x) FORERED x RESETTEXT
#define GRN(x) FOREGRN x RESETTEXT
#define YEL(x) FOREYEL x RESETTEXT
#define BLU(x) FOREBLU x RESETTEXT
#define MAG(x) FOREMAG x RESETTEXT
#define CYN(x) FORECYN x RESETTEXT
#define WHT(x) FOREWHT x RESETTEXT


// Example usage: cout << BLU("This text's color is now blue!") << endl;


// These will set the text's background color then reset it back.
#define BackBLK(x) BACKBLK x RESETTEXT
#define BackRED(x) BACKRED x RESETTEXT
#define BackGRN(x) BACKGRN x RESETTEXT
#define BackYEL(x) BACKYEL x RESETTEXT
#define BackBLU(x) BACKBLU x RESETTEXT
#define BackMAG(x) BACKMAG x RESETTEXT
#define BackCYN(x) BACKCYN x RESETTEXT
#define BackWHT(x) BACKWHT x RESETTEXT


// Example usage: cout << BACKRED(FOREBLU("I am blue text on a red background!")) << endl;


// These functions will set the background to the specified color indefinitely.
// NOTE: These do NOT call RESETTEXT afterwards. Thus, they will set the background color indefinitely until the user executes cout << RESETTEXT
// OR if a function is used that calles RESETTEXT i.e. cout << RED("Hello World!") will reset the background color since it calls RESETTEXT.
// To set text COLOR indefinitely, see SetFore functions below.
#define SetBackBLK BACKBLK
#define SetBackRED BACKRED
#define SetBackGRN BACKGRN
#define SetBackYEL BACKYEL
#define SetBackBLU BACKBLU
#define SetBackMAG BACKMAG
#define SetBackCYN BACKCYN
#define SetBackWHT BACKWHT


// Example usage: cout << SetBackRED << "This text's background and all text after it will be red until RESETTEXT is called in some way" << endl;


// These functions will set the text color until RESETTEXT is called. (See above comments)
#define SetForeBLK FOREBLK
#define SetForeRED FORERED
#define SetForeGRN FOREGRN
#define SetForeYEL FOREYEL
#define SetForeBLU FOREBLU
#define SetForeMAG FOREMAG
#define SetForeCYN FORECYN
#define SetForeWHT FOREWHT


// Example usage: cout << SetForeRED << "This text and all text after it will be red until RESETTEXT is called in some way" << endl;


#define BOLD(x) "\x1B[1m" x RESETTEXT // Embolden text then reset it.
#define BRIGHT(x) "\x1B[1m" x RESETTEXT // Brighten text then reset it. (Same as bold but is available for program clarity)
#define UNDL(x) "\x1B[4m" x RESETTEXT // Underline text then reset it.


// Example usage: cout << BOLD(BLU("I am bold blue text!")) << endl;


// These functions will embolden or underline text indefinitely until RESETTEXT is called in some way.


#define SetBOLD "\x1B[1m" // Embolden text indefinitely.
#define SetBRIGHT "\x1B[1m" // Brighten text indefinitely. (Same as bold but is available for program clarity)
#define SetUNDL "\x1B[4m" // Underline text indefinitely.


// Example usage: cout << setBOLD << "I and all text after me will be BOLD/Bright until RESETTEXT is called in some way!" << endl;


#endif /* COLORS_h */

正如你所看到的,它有更多的功能,比如临时、无限期地设置背景颜色,以及其他功能。我也相信它对初学者更友好,更容易记住所有的函数。

#include <iostream>
#include "COLORS.h"


int main() {
std::cout << SetBackBLU << SetForeRED << endl;
std::cout << "I am red text on a blue background! :) " << endl;
return 0;
}

只需在项目中包含头文件,就可以使用彩色终端输出了。

我为此写了一个跨平台库color_ostream,支持ANSI color, 256 color和true color,你所要做的就是直接包括它,并像这样将cout更改为rd_cout。

< span style=" font - family:宋体;">性病< / th > < span style=" font - family:宋体;"> < / th >基本颜色 < span style=" font - family:宋体;"> < / th > 256颜色 < span style=" font - family:宋体;">真彩色< / th > < span style=" font - family:宋体;"> std:: cout td > < / < span style=" font - family:宋体;"> color_ostream: rd_cout td > < / < span style=" font - family:宋体;"> color_ostream: rd256_cout td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_cout td > < / < span style=" font - family:宋体;"> std:: wcout td > < / < span style=" font - family:宋体;"> color_ostream: rd_wcout td > < / < span style=" font - family:宋体;"> color_ostream: rd256_wcout td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_wcout td > < / < span style=" font - family:宋体;"> std:: cerr td > < / < span style=" font - family:宋体;"> color_ostream: rd_cerr td > < / < span style=" font - family:宋体;"> color_ostream: rd256_cerr td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_cerr td > < / < span style=" font - family:宋体;"> std:: wcerr td > < / < span style=" font - family:宋体;"> color_ostream: rd_wcerr td > < / < span style=" font - family:宋体;"> color_ostream: rd256_wcerr td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_wcerr td > < / < span style=" font - family:宋体;"> std::阻塞td > < / < span style=" font - family:宋体;"> color_ostream: rd_clog td > < / < span style=" font - family:宋体;"> color_ostream: rd256_clog td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_clog td > < / < span style=" font - family:宋体;"> std:: wclog td > < / < span style=" font - family:宋体;"> color_ostream: rd_wclog td > < / < span style=" font - family:宋体;"> color_ostream: rd256_wclog td > < / < span style=" font - family:宋体;"> color_ostream: rdtrue_wclog td > < /

这里有一个简单的例子:

//hello.cpp
#include "color_ostream.h"


using namespace color_ostream;


int main([[maybe_unused]] int argc, [[maybe_unused]] char *argv[]) {
rd_wcout.imbue(std::locale(std::locale(),"",LC_CTYPE));
rd_wcout << L"Hello world\n";
rd_wcout << L"Hola Mundo\n";
rd_wcout << L"Bonjour le monde\n";


rd256_wcout << L"\n256 color" << std::endl;
rd256_wcout << L"Hello world\n";
rd256_wcout << L"Hola Mundo\n";
rd256_wcout << L"Bonjour le monde\n";


rdtrue_wcout << L"\ntrue color" << std::endl;
rdtrue_wcout << L"Hello world\n";
rdtrue_wcout << L"Hola Mundo\n";
rdtrue_wcout << L"Bonjour le monde\n";
return 0;
}

你可以直接写ANSI转义码来控制颜色,也可以使用像{fmt}这样的库来提供api。

例如:

#include <fmt/color.h>


int main() {
fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold,
"Hello, {}!\n", "world");
}

打印

.

大多数现代终端都支持ANSI转义序列,但您可以使用terminfo数据库进行检查。

我知道这个问题很老了,但我把这个答案贴出来给未来的读者。我已经在c++中编写了一个图书馆用于彩色输出。这使用操纵者,使工作容易支持跨平台,但没有在这里测试是如何使用这个,

#include "srilakshmikanthanp/ANSI.hpp"


using namespace srilakshmikanthanp;

3位和4位颜色:

// background
std::cout << ansi::BGyellow;
// foreground
std::cout << ansi::FGblue;
// output
std::cout << "Blue on yellow";
// reset
std::cout << ansi::reset;

8位颜色:

// background
std::cout << ansi::BGcolor(157);
// foreground
std::cout << ansi::FGcolor(100);
// outpt
std::cout << "8 bit color";
// reset
std::cout << ansi::reset;

24位颜色:

// background
std::cout << ansi::BGcolor(0, 255, 0);
// foreground
std::cout << ansi::FGcolor(0, 0, 255);
// output
std::cout << "24 bit color";
// reset
std::cout << ansi::reset;

字符串:

可以使用ansi::str轻松地将此操作符转换为字符串

std::string BGyellow = ansi::str(ansi::BGyellow);
std::string FGblue = ansi::str(ansi::FGblue);
std::string reset = ansi::str(ansi::reset);


std::cout << BGyelow;
// foreground
std::cout << FGblue;
// output
std::cout << "Blue on Yellow";
// reset
std::cout << reset;

你可以在github上找到更多的信息:)