##昨天晚上寫高併發服務器時,因爲服務端需要響應多個客戶,想在服務端向已連接的所有客戶發送一條新人到來消息,但是客戶端同樣需要打印一些日誌,跟需要確認的消息混合在一起,很難鑑別出來,在網上搜索如何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