使用cout在命令行輸出彩色字體

##昨天晚上寫高併發服務器時,因爲服務端需要響應多個客戶,想在服務端向已連接的所有客戶發送一條新人到來消息,但是客戶端同樣需要打印一些日誌,跟需要確認的消息混合在一起,很難鑑別出來,在網上搜索如何printf打印彩色字體…但是很不幸的是因爲看不懂,所以放棄了,所幸C++中有個函數SetConsoleTextAttribute(參數表) 可以將命令行窗口的輸出全部換色。
SetConsoleTextAttribute()參數表中使用兩個屬性—GetStdHandle()和FOREGROUND_或BACKGROUND_
第一個屬性獲得句柄(即要設置顏色的地方)
第二個屬性設置顏色,用或符號–’|'將屬性相或表示將顏色混合

GetStdHandle(STD_OUTPUT_HANDLE)獲得句柄。
FOREGROUND_INTENSITY 表示設置前景色爲高亮顯示。
FOREGROUND_RED 表示設置前景色爲紅色,即字體顏色爲紅色。
FOREGROUND_GREEN 表示設置前景色爲綠色,即字體顏色爲綠色。
FOREGROUND_BLUE 表示設置前景色爲藍色,即字體顏色爲藍色。
BACKGROUND_INTENSITY 表示設置背景色爲高亮顯示。
BACKGROUND_RED 表示設置背景色爲紅色。
BACKGROUND_GREEN 表示設置背景色爲綠色。
BACKGROUND_BLUE 表示設置背景色爲藍色。

// 一定要引入頭文件---“windows.h”
#include <iostream>
#include "windows.h"
using namespace std;

int main()
{
	cout << "原色testCOLOR(沒有設置字體顏色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_GREEN | FOREGROUND_BLUE);//設置三色相加
	cout << "白色testCOLOR(紅色綠色藍色相加)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	//設置紅色
	cout << "紅色testCOLOR(設置的顏色爲紅色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN)
		;//設置綠色
	cout << "綠色testCOLOR(設置的顏色爲綠色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	//設置藍色
	cout << "藍色testCOLOR(設置的顏色爲藍色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_GREEN);//設置紅色和綠色相加
	cout << "黃色testCOLOR(紅色和綠色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |
		FOREGROUND_BLUE);//設置紅色和藍色相加
	cout << "粉色testCOLOR(紅色和藍色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN |
		FOREGROUND_BLUE);//設置綠色和藍色相加
	cout << "青色testCOLOR(綠色和藍色相加色)" << endl;
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	//設置顏色,沒有添加顏色,故爲原色
	cout << endl;

	system("pause");
	return 0;
}

結果圖;簡陋打印了出來,效果還不錯在這裏插入圖片描述

————————————————

原文鏈接:https://blog.csdn.net/u012424148/article/details/52792472

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章