有时候我们希望向控制台输出彩色的或是带有背景的字来突出内容,在windows可以通过下面的代码来实现:
#pragma once
#include <windows.h>
#define STYLE_WHITE FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED
#define STYLE_GREEN FOREGROUND_GREEN|FOREGROUND_INTENSITY
#define STYLE_YELLOW FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY
#define STYLE_RED FOREGROUND_RED|FOREGROUND_INTENSITY
class cprint
{
public:
cprint(WORD text_style, bool lock = false);
void operator ()(const char* format, ...);
void set_text_style(WORD text_style);
~cprint();
private:
friend struct global_init;
static CRITICAL_SECTION cs_;
void global_init();
bool locked_;
};
对应得cpp文件为:
#include <stdio.h>
#include "cprint.h"
CRITICAL_SECTION cprint::cs_;
static HANDLE g_stdout = NULL;
static CONSOLE_SCREEN_BUFFER_INFO g_default_console_info = { 0 };
void cprint::global_init()
{
sta