为您的 std::cout 添加颜色






4.82/5 (40投票s)
2006 年 11 月 17 日

161981
一个为 CRT 程序添加颜色的微型库。
引言
本文演示了一个片段,允许为控制台消息添加颜色。
背景
嗯,这真的需要任何注释吗?
使用代码
这个示例展示了如何使用该库
#include "ConsoleColor.h" std::cout << green << "This text is written in green" << white << std::endl; std::cout << color(FOREGROUND_RED|FOREGROUND_GREEN) << "This text has a really exiting color !" << white << std::endl;
现在,这是“库”
// ConsoleColor.h #pragma once #include <iostream> #include <windows.h> inline std::ostream& blue(std::ostream &s) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout, FOREGROUND_BLUE |FOREGROUND_GREEN|FOREGROUND_INTENSITY); return s; } inline std::ostream& red(std::ostream &s) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout, FOREGROUND_RED|FOREGROUND_INTENSITY); return s; } inline std::ostream& green(std::ostream &s) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN|FOREGROUND_INTENSITY); return s; } inline std::ostream& yellow(std::ostream &s) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY); return s; } inline std::ostream& white(std::ostream &s) { HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); return s; } struct color { color(WORD attribute):m_color(attribute){}; WORD m_color; }; template <class _Elem, class _Traits> std::basic_ostream<_Elem,_Traits>& operator<<(std::basic_ostream<_Elem,_Traits>& i, color& c) { HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout,c.m_color); return i; } // Copyleft Vincent Godin