控制台输出彩色文字

控制台输出彩色文字

1.Unbuntu系统

  • 首先定义各种颜色
#define RESET       "\033[0m"
#define BLACK       "\033[30m"             /* Black */
#define RED         "\033[31m"             /* Red */
#define GREEN       "\033[32m"             /* Green */
#define YELLOW      "\033[33m"             /* Yellow */
#define BLUE        "\033[34m"             /* Blue */
#define MAGENTA     "\033[35m"             /* Magenta */
#define CYAN        "\033[36m"             /* Cyan */
#define WHITE       "\033[37m"             /* White */
#define BOLDBLACK   "\033[1m\033[30m"      /* Bold Black */
#define BOLDRED     "\033[1m\033[31m"      /* Bold Red */
#define BOLDGREEN   "\033[1m\033[32m"      /* Bold Green */
#define BOLDYELLOW  "\033[1m\033[33m"      /* Bold Yellow */
#define BOLDBLUE    "\033[1m\033[34m"      /* Bold Blue */
#define BOLDMAGENTA "\033[1m\033[35m"      /* Bold Magenta */
#define BOLDCYAN    "\033[1m\033[36m"      /* Bold Cyan */
#define BOLDWHITE   "\033[1m\033[37m"      /* Bold White */

实际输出时,根据颜色可直接输出

// 输出红色
std::cout << "\033[31m]" << "Red words" << "\033[0m" << std::endl;
  • 设置颜色匹配函数
inline std::string GetConsoleFrontColor(CONSOLE_FRONT_COLOR_E cfc = CONSOLE_FRONT_COLOR_E::CFC_WHITE)
{
	std::string cfc_color = WHITE;
	switch (cfc)
	{
	case CONSOLE_FRONT_COLOR_E::CFC_RESET:
		cfc_color = RESET;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BLACK:   
		cfc_color = BLACK;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_RED:
		cfc_color = RED;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_GREEN:
		cfc_color = GREEN;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_YELLOW:
		cfc_color = YELLOW;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BLUE:
		cfc_color = BLUE;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_MAGENTA:
		cfc_color = MAGENTA;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_CYAN:
		cfc_color = CYAN;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_WHITE:
		cfc_color = WHITE;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDBLACK:
		cfc_color = BOLDBLACK;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDRED:
		cfc_color = BOLDRED;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDGREEN:
		cfc_color = BOLDGREEN;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDYELLOW:
		cfc_color = BOLDYELLOW;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDBLUE:
		cfc_color = BOLDBLUE;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDMAGENTA:
		cfc_color = BOLDMAGENTA;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDCYAN:
		cfc_color = BOLDCYAN;
		break;
	case CONSOLE_FRONT_COLOR_E::CFC_BOLDWHITE:
		cfc_color = BOLDWHITE;
		break;
	default:
		cfc_color = WHITE;
		break;
	}

	return cfc_color;
};
  • 函数调用

    void ShowMessage(const std::string msg, CONSOLE_FRONT_COLOR_E cfc)
    {
        std::string color = GetConsoleFrontColor(cfc);
        std::string color_reset = GetConsoleFrontColor(CONSOLE_FRONT_COLOR_E::CFC_RESET);
        // 注意:这里最后要输出一个reset,否则颜色设置之后一直保持不变。
        std::cout << color <<  msg << color_reset << std::endl; 
    }
    
    // 调用
    ShowMessage("Hello world!", CONSOLE_FRONT_COLOR_E::CFC_GREEN);
    

参考:

(原+转)ubuntu终端输出彩色文字

2.Windows控制台颜色

windows采用16进制数表示各个颜色,颜色之间可以组合

//   0 : 黑色      8 : 灰色
//   1 : 蓝色      9 : 淡蓝色
//   2 : 绿色      A : 淡绿色
//   3 : 浅绿色    B : 淡浅绿色
//   4 : 红色      C : 淡红色
//   5 : 紫色      D : 淡紫色
//   6 : 黄色      E : 淡黄色
//   7 : 白色      F : 亮白色
#include <stdint.h>
#include <iostream>
#include <string>
#include <Windows.h>

//   控制台前景颜色
enum ConsoleForegroundColor
{
    CFC_Red          = FOREGROUND_RED,
    CFC_RedI         = FOREGROUND_INTENSITY | FOREGROUND_RED,
    CFC_Green        = FOREGROUND_INTENSITY | FOREGROUND_GREEN,
    CFC_Blue         = FOREGROUND_INTENSITY | FOREGROUND_BLUE,
    CFC_Yellow       = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN,
    CFC_Purple       = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE,
    CFC_Cyan         = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
    CFC_Gray         = FOREGROUND_INTENSITY,
    CFC_White        = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
    CFC_HighWhite    = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
    CFC_Black        = 0,
};

// 背景色枚举值
enum ConsoleBackGroundColor
{
    CBC_Red          = BACKGROUND_INTENSITY | BACKGROUND_RED,
    CBC_Green        = BACKGROUND_INTENSITY | BACKGROUND_GREEN,
    CBC_Blue         = BACKGROUND_INTENSITY | BACKGROUND_BLUE,
    CBC_Yellow       = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN,
    CBC_Purple       = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE,
    CBC_Cyan         = BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE,
    CBC_White        = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE,
    CBC_HighWhite    = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE,
    CBC_Black        = 0,
};

// 设置颜色函数
void SetConsoleColor(ConsoleForegroundColor foreColor = CFC_White, ConsoleBackGroundColor backColor = CBC_Black)
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(handle, foreColor | backColor);
}

//调用函数
void ShowMessage(std::string msg, ConsoleForegroundColor foreColor = CFC_White, ConsoleBackGroundColor backColor = CBC_Black)
{
    SetConsoleColor(foreColor, backColor);
    std::cout << msg << std::endl;
    SetConsoleColor(CFC_White, CBC_Black);
}
// 主程序
int main(int argc, char** argv) 
{
    ShowMessage("Hello World QCJ.", CFC_Red, CBC_Purple);
    return 0;
}

以上。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值