2011-09-14 3 views
4

ANSI-Cエスケープコードhereについて読んでいます。 C/C++のprintf/coutでそれを使用して、コンソールドに出力されたテキストを色づけしましたが、成功しませんでした。コンソールでカラーテキストを出力するためのANSI Escapeコードの使用方法

コード:

#include <iostream> 

#include <cstdio> 

int main() 
{ 

    int a=3, b=5; 
    int &ref = a; 

    ref = b; 

    //cout << "\155\32\m" << a << b <<'\n'; //here it prints m→m 5, no colored text 
    printf("\155\32\m %d",a); //here to it prints same - m→m 5, 

    getchar(); 

} 

どのようにコンソールに出力色付きのテキストにこれらのエスケープコードを使用するには?

私に何か不足していますか?

編集:いくつかのC++コードで私は、この関数の呼び出し

textcolor(10); 

を見ました。しかし、それはグラムで++およびVisual Studioでコンパイルエラーが発生します。どのコンパイラがこの機能を利用できましたか?詳細は?

答えて

7

私はあなたがESC文字忘れた怖い:

#include <cstdio> 

int main() 
{ 
    printf("%c[%dmHELLO!\n", 0x1B, 32); 
} 

残念ながらそれだけではbashを使用して、LinuxコンソールのようなANSIエスケープシーケンス(またはANSI.SYSを使用し、古いWindowsのコンソールをサポートするコンソール上で動作しますが)

+2

pau.estella @。代わりに、それは←[32mHELLO!また、plsすることができます。このprintf( "%c [%dmHELLO!\ n"、0x1B、32);働く情報のおかげで – goldenmean

6

私は非常にsimple text-management libraryを作成しました。これはマルチプラットフォームなので、Windows用のネイティブAPIコールと残りのプラットフォーム用のANSIエスケープシーケンスを使用します。完全に文書化されており、ソースコードを参照することもできます。

あなたの特定の質問については、いくつかのコードがありません。たとえば、テキストの色を変更するには、次のようなものを使用する必要があります。

static const char * CSI = "\33["; 
printf("%s%s", CSI, "31m"); // RED 

希望します。

+0

ありがとうございます。しかし、私は、テキストを色分けするためのANSIエスケープシーケンスは、DOSコンソールでのみ動作すると思います。 Windowsのcmdでは、色付きテキストではなくいくつかの制御文字を表示します。 – goldenmean

+0

@goldenmeanはい、Windowsのコマンドコンソールでは、Windows API呼び出しを使用する必要があります。私があなたに指し示した図書館は、これを自動化するように指示しました。 – Baltasarq

+0

私は、プリプロセッサマクロがこの場合に便利であることを示唆したいと思うので、あなたは 'printf(" Hello "COLOR_RED" World "COLOR_OFF);'としてrstringを書くことができます。 –

3

ANSIエスケープコードは、ansi.sysデバイスドライバを使用してDOS上で動作します。彼らはWindows XP以上を動作しません。 console APISetConsoleTextAttribute()

textcolorをborland turbo C++コンパイラで使用する必要があります。

関連する問題