您的位置:首页 > 编程语言 > C语言/C++

C++更改输出控制台颜色

2012-05-21 15:39 453 查看
// 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;

}

====================Demo Code=============================================

#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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: