此方法借鉴网络上的方法,本人进行了简单封装。可以在windows控制台下,控制输出内容的颜色。
consoleutils.h
/************************************************************/
/* File: consoleutils.h */
/* Author: Yangze DateTime: 2021-02-07 17:22 */
/* E-Mail: 709102202@qq.com */
/************************************************************/
/*
* This is a console information output color control class,
* it is based on Windows API encapsulation, not suitable for
* the integration of Linux and other systems
*/
/************************************************************/
#ifndef CONSOLEUTILS_H
#define CONSOLEUTILS_H
#include <stdint.h>
#include <iostream>
#include <string>
#include <Windows.h>
// 0 = 黑色 8 = 灰色
// 1 = 蓝色 9 = 淡蓝色
// 2 = 绿色 A = 淡绿色
// 3 = 浅绿色 B = 淡浅绿色
// 4 = 红色 C = 淡红色
// 5 = 紫色 D = 淡紫色
// 6 = 黄色 E = 淡黄色
// 7 = 白色 F = 亮白色
// 控制台前景颜色
enum ConsoleForegroundColor
{
enmCFC_Red = FOREGROUND_INTENSITY | FOREGROUND_RED,
enmCFC_Green = FOREGROUND_INTENSITY | FOREGROUND_GREEN,
enmCFC_Blue = FOREGROUND_INTENSITY | FOREGROUND_BLUE,
enmCFC_Yellow = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN,
enmCFC_Purple = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE,
enmCFC_Cyan = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
enmCFC_Gray = FOREGROUND_INTENSITY,
enmCFC_White = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
enmCFC_HighWhite = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
enmCFC_Pink = FOREGROUND_RED | FOREGROUND_BLUE,
enmCFC_Black = 0,
};
enum ConsoleBackGroundColor
{
enmCBC_Red = BACKGROUND_INTENSITY | BACKGROUND_RED,
enmCBC_Green = BACKGROUND_INTENSITY | BACKGROUND_GREEN,
enmCBC_Blue = BACKGROUND_INTENSITY | BACKGROUND_BLUE,
enmCBC_Yellow = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN,
enmCBC_Purple = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE,
enmCBC_Cyan = BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE,
enmCBC_White = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE,
enmCBC_HighWhite = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE,
enmCBC_Black = 0,
};
class ConsoleUtils
{
public:
ConsoleUtils();
static void SetConsoleColor(ConsoleForegroundColor foreColor = enmCFC_White, ConsoleBackGroundColor backColor = enmCBC_Black);
};
#endif // CONSOLEUTILS_H
consoleutils.cpp
#pragma execution_character_set("utf-8")
#include "consoleutils.h"
ConsoleUtils::ConsoleUtils()
{
}
void ConsoleUtils::SetConsoleColor(ConsoleForegroundColor foreColor, ConsoleBackGroundColor backColor)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, foreColor | backColor);
}