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 [GiriWiki]

ユーザ用ツール

サイト用ツール


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[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” だと 太字-下線-赤文字-緑背景 とできる。 

ja/cpp/wanttodo1.txt · 最終更新: 2017/10/17 12:36 by kota