C/C++ : printf / std::cout のコンソール出力のテキストに色をつける(Windows)
Windows はここで紹介されているようなエスケープコードが効かないので、Windows.h の SetConsoleTextAttribute 関数を使います。
もろもろのメモ。
- FOREGROUND_INTENSITY を付けると色が明るめになる
- 下の例でいうところの Gray が普段のコンソールのテキスト色の状態
- FOREGROUND_XXX ではなく BACKGROUND_XXX を使えば背景色を変えられる
- プログラム終了後も同じコンソールでは色の変更が継続するので、元に戻す必要がある
void SetConsoleTextGray() { HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( handle, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN ); } void SetConsoleTextRed() { HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_RED ); } void SetConsoleTextGreen() { HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN ); } void SetConsoleTextWhite() { HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN ); }