カラー出力を必要とする単純なアプリケーションを作成しています。出力を emacs や bash のように色付けするにはどうすればよいですか?
私のアプリケーションは UNIX システム専用なので、Windows は気にしません。
最新のターミナル エミュレータはすべて、ANSI エスケープ コードを使用して色やその他のものを表示します。
ライブラリを気にしないでください。コードは非常に単純です。
詳細はこちら。
C での例:
#include <stdio.h>
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
#define ANSI_COLOR_YELLOW "\x1b[33m"
#define ANSI_COLOR_BLUE "\x1b[34m"
#define ANSI_COLOR_MAGENTA "\x1b[35m"
#define ANSI_COLOR_CYAN "\x1b[36m"
#define ANSI_COLOR_RESET "\x1b[0m"
int main (int argc, char const *argv[]) {
printf(ANSI_COLOR_RED "This text is RED!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_GREEN "This text is GREEN!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_YELLOW "This text is YELLOW!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_BLUE "This text is BLUE!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_MAGENTA "This text is MAGENTA!" ANSI_COLOR_RESET "\n");
printf(ANSI_COLOR_CYAN "This text is CYAN!" ANSI_COLOR_RESET "\n");
return 0;
}
カラー シーケンスの処理は煩雑になり、異なるシステムでは異なるカラー シーケンス インジケーターが使用される場合があります。
ncursesを試してみることをお勧めします。色以外にも、ncurses はコンソール UI で多くの優れた機能を実行できます。
特別な色制御コードを出力して、色付きの端末出力を取得できます。ここに、色を印刷する方法に関する優れたリソースがあります。
例えば:
printf("\033[22;34mHello, world!\033[0m"); // shows a blue hello world
編集:私のオリジナルはプロンプトカラーコードを使用していましたが、これは機能しません:(これは機能します(テストしました)。
すべての機能に 1 つの色を割り当てて、より便利にすることができます。
#define Color_Red "\33[0:31m\\]" // Color Start
#define Color_end "\33[0m\\]" // To flush out prev settings
#define LOG_RED(X) printf("%s %s %s",Color_Red,X,Color_end)
foo()
{
LOG_RED("This is in Red Color");
}
同様に、さまざまなカラー コードを選択して、これをより一般的なものにすることができます。
文字列の書式設定で文字を印刷できないためです。このようなものでフォーマットを追加することも考えられます
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
のような形式ですprintf
PRINTC (4, "%s\n", "bar")
印刷しますblue bar
PRINTC (1, "%d", 'a')
印刷しますred 97