windows10 C++ コマンドプロンプトで実行した時に文字色・背景色を変える
環境
- windows 10
- visual studioでC++開発
- cmdで実行
やりたいこと
C++のソースにエスケープシーケンスを使って、ansiカラーを出力させる
#include <iostream> using namespace std; int main() { printf("\033[33m"); /* 文字色黄色 */ cout << "HELLO" << endl; printf("\033[0m"); /* 色の初期化 */ cout << "HELLO" << endl; }
エスケープシーケンスでできること、色について
エスケープシーケンスとは、エスケープコードで始まる文字列で
その中で、ANSIエスケープコードを使って色を変える
- ANSIエスケープコードのフォーマット
ESC[n1;n2;...X
- ESCの8進、16進変換
¥033 : 8進数で表記 ¥x1b : 16進数で表記
参考
実行してもうまくいかない。
上手く読み込まれず、色のコードがそのまま文字列として出力される
エスケープシーケンスを読み込むために ansicon を使う
windows xp 以下は System32¥config.nt というファイルに設定を追加するだけで
エスケープシーケンスが読み込めてたみたいだけど
windows10には config.nt 設定ファイル自体が存在しない。
Pathを通して、実行コマンドの前に「ansicon」コマンドを追加する。
※参考サイトにあるAutoRunレジストリエントリはよく理解できなかったので、使わない。
Project.exe の実行
ansicon Project
ほかに出来ること。
printf("¥033[2J"); /* 画面をクリア */ printf("¥033[5;10H"); /* カーソルを移動 */ printf("\033[33m"); /* 文字色を黄色に */ printf("Hello!¥n"); /* メッセージを出力 */ printf("Press [Enter]...¥n"); /* メッセージを出力 */ (void)getchar(); /* キー入力を待つ */ printf("¥033[93m"); /* 文字色を標準に */