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
====== 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[0m" : 指定リセット (= "\033[m")
* "\033[1m" : 太字
* "\033[2m" : 文字を薄く表示
* "\033[3m" : イタリック
* "\033[4m" : 下線
* "\033[5m" : 点滅
* "\033[6m" : 点滅(高速)
* "\033[7m" : 文字色-背景 入れ替え
* "\033[8m" : 表示を隠す
* "\033[9m" : 取り消し
などがある。
複数組み合わせは";" で区切って、例えば"\033[1;4;31;42m" だと 太字-下線-赤文字-緑背景 とできる。