cout如何控制输出的字符颜色?
如题,像Google test那样控制输出的颜色(红色,绿色),用纯C++/C++11可以做到么?
如果不能的话,GCC在linux下调用什么函数可以做到? VC在windows下调用什么api可以控制cmd窗口的颜色?
[解决办法]
#pragma once
#include <windows.h>
#include <stdio.h>
#define fg_blue FOREGROUND_BLUE
#define fg_red FOREGROUND_RED
#define fg_green FOREGROUND_GREEN
#define fg_intensity FOREGROUND_INTENSITY
void set_std_color(int color) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);;
SetConsoleTextAttribute(hConsole, color);
}
void set_std_color_light(int color) {
set_std_color(color
[解决办法]
FOREGROUND_INTENSITY);
}
#define printfc(color,m,...); \
set_std_color_light(color); \
printf(m, __VA_ARGS__); \
set_std_color(FOREGROUND_RED
[解决办法]
FOREGROUND_GREEN
[解决办法]
FOREGROUND_BLUE); // default color
// 用法
printfc(fg_red, "xxxx: %d\n", 2);
std::cout << greencolor << "hello " << redcolor << " world!";
static void SetConsoleColor(WORD wAttribute)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, wAttribute);
}
inline std::ostream& defcolor(std::ostream& ostr)
{
SetConsoleColor(FOREGROUND_BLUE
[解决办法]
FOREGROUND_GREEN
[解决办法]
FOREGROUND_RED);
return ostr;
}
inline std::ostream& greencolor(std::ostream& ostr)
{
SetConsoleColor(FOREGROUND_GREEN
[解决办法]
FOREGROUND_INTENSITY);
return ostr;
}
inline std::ostream& bluecolor(std::ostream& ostr)
{
SetConsoleColor(FOREGROUND_BLUE
[解决办法]
FOREGROUND_INTENSITY);
return ostr;
}
inline std::ostream& redcolor(std::ostream& ostr)
{
SetConsoleColor(FOREGROUND_RED
[解决办法]
FOREGROUND_INTENSITY);
return ostr;
}
inline std::ostream& lredcolor(std::ostream& ostr)
{
SetConsoleColor(FOREGROUND_RED);
return ostr;
}