Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:cpp:wanttodo1

std::cout の出力に色をつけたい


c++の機能で実現するのではなく、ターミナル(コンソール)にエスケープシーケンスを送りつけて実現する。

エスケープ文字は“\033”(8進数表示)または“\x1b”(16進数表示)で表されるものである。

std::cout << "\033[31m aho \033[m" << std::endl;

のようにすると aho が赤文字になる。 最後の“\033[m” は指定の解除。

実はコンソールのSGR(Select Graphic Rendition)コマンドというものらしい。 文法的には “ESC[○○m”というような形でグラフィック系の指定を行う。
○○の部分が、例えば30番台は文字色が 30:black, 31:red, 32:green, 33:yellow, 34:blue, 35:magenta, 36:cyan, 37:white となる。
40番台は背景色が同様に変わる。

その他、

などがある。

複数組み合わせは“;” で区切って、例えば“\033[1;4;31;42m” だと 太字-下線-赤文字-緑背景 とできる。