cout怎么控制输出的字符颜色

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);


之前用的,好像只支持 rgb 三原色,以及颜色混合,另外还有个暗色intensity可以和各种颜色组合
如果有别的方法请跟帖
------解决方案--------------------
linux 好像输出控制字符就可以控制颜色.
windows 就是楼上说的 SetConsoleTextAttribute 函数, 可以通过做一些封装后这样使用:


  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