Linux端末に色付きのテキストを出力するにはどうすればよいですか?


300

色付きの文字をサポートするLinux端末に印刷するにはどうすればよいですか?

端末がカラーコードをサポートしているかどうかを確認するにはどうすればよいですか?


9
端末の機能を判別するには、端末機能データベースを確認してください。参照してくださいtermcap(5)
jrockway 2010

1
ここに配置したコードスニペットを自由に見てください。これは、いくつかのマクロを使用して出力に色を付ける小さなツールです。
epatel 2010

7
「termcapデータベースは、文字セル端末とプリンターの機能を説明するための古い機能です。古いプログラムの機能でのみ保持されます。新しいプログラムでは、terminfo(5)データベースと関連ライブラリを使用する必要があります。」-termcap(5)
OrangeDog

あなたは簡単にtermcolorを
ルディ・ジェソップ

1
カラー印刷で高度なことをしたい場合は、この記事を読むことをお勧めします。とても役に立った
SubMachine

回答:


408

ANSIカラーコードを出力する必要があります。すべての端末がこれをサポートしているわけではないことに注意してください。色シーケンスがサポートされていない場合、ゴミが表示されます。

例:

 cout << "\033[1;31mbold red text\033[0m\n";

ここでは、\033ESC文字、ASCII 27は、それが続いている[ゼロ以上の数字を区切っ、;、そして最後の手紙m。番号は、その時点から切り替える色と形式を示しています。

前景色と背景色のコードは次のとおりです。

         foreground background
black        30         40
red          31         41
green        32         42
yellow       33         43
blue         34         44
magenta      35         45
cyan         36         46
white        37         47

さらに、これらを使用できます。

reset             0  (everything back to normal)
bold/bright       1  (often a brighter shade of the same colour)
underline         4
inverse           7  (swap foreground and background colours)
bold/bright off  21
underline off    24
inverse off      27

ウィキペディア表をご覧ください広くサポートされていない他のコード。


端末がカラーシーケンスをサポートしているかどうかを判断するには、TERM環境変数の値を読み取ります。これは、使用される特定の端末タイプを指定する必要があります(例えばvt100gnome-terminalxtermscreen、...)。次に、terminfoデータベースで調べますcolors機能を確認してください。


15
これは掲示板での蜂の膝でした…
Potatoswatter 2010

11
何のmために/立っていますか?
ニッポン

4
@nipponese \033[およびmANSIカラーコードのエスケープシーケンスの開始と終了をマークします。参照:en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
thameera '22

20
const std::string red("\033[0;31m");またはのような「マニピュレータ」を定義して使用していconst std::string reset("\033[0m");ます。そうすれば、簡単に書けますcout << red << "red text" << reset << endl;
Daniel Langr 2016

4
私はこれを色の視覚化のために見てみます:misc.flogisoft.com/bash/tip_colors_and_formatting
Liran Funaro

97

基本

出力の前景色と背景色を設定するために使用できるC ++クラスを作成しました。このサンプルプログラムはThis ->word<- is red.、前景色wordが赤になるように印刷およびフォーマットする例です。

#include "colormod.h" // namespace Color
#include <iostream>
using namespace std;
int main() {
    Color::Modifier red(Color::FG_RED);
    Color::Modifier def(Color::FG_DEFAULT);
    cout << "This ->" << red << "word" << def << "<- is red." << endl;
}

ソース

#include <ostream>
namespace Color {
    enum Code {
        FG_RED      = 31,
        FG_GREEN    = 32,
        FG_BLUE     = 34,
        FG_DEFAULT  = 39,
        BG_RED      = 41,
        BG_GREEN    = 42,
        BG_BLUE     = 44,
        BG_DEFAULT  = 49
    };
    class Modifier {
        Code code;
    public:
        Modifier(Code pCode) : code(pCode) {}
        friend std::ostream&
        operator<<(std::ostream& os, const Modifier& mod) {
            return os << "\033[" << mod.code << "m";
        }
    };
}

高度な

クラスに機能を追加することもできます。たとえば、マゼンタ色を追加したり、太字などのスタイルを追加したりすることもできます。これを行うには、Code列挙へのもう1つのエントリを入力します。これは良いリファレンスです。


すごい。他の色や背景色を追加できると便利です。
nanoの

7
さらにいくつか: `FG_DEFAULT = 39、FG_BLACK = 30、FG_RED = 31、FG_GREEN = 32、FG_YELLOW = 33、FG_BLUE = 34、FG_MAGENTA = 35、FG_CYAN = 36、FG_LIGHT_GRAY = 37、FG_DARK_GRAY = 90、_FG_LIGHT_RED_LIGHT_ 92、FG_LIGHT_YELLOW = 93、FG_LIGHT_BLUE = 94、FG_LIGHT_MAGENTA = 95、FG_LIGHT_CYAN = 96、FG_WHITE = 97、BG_RED = 41、BG_GREEN = 42、BG_BLUE = 44、BG_DEFAULT = 49`
Phantrast

6
operator<<for を定義するとCode、のstd::cout << Color::FG_RED;代わりに直接書き込むことができますstd::cout << Modifier(Color::FG_RED);。つまり、Modifier必要ありません。
Nawaz

2
@Nawazいい考えです。これがそのような実装です:pastebin.com/zWC3t9hC。ただし、拡張可能だと思うので、元の実装は回答に残しておきます。
JoelSjögren、2014年

1
実際には、色をオンまたはオフにするフラグを追加できるため、最初の実装の方が好きです。bool sh;クラスに追加し、コンストラクターをに変更しModifier (Code pCode, bool show = true) : code(pCode), sh(show) {}ます。最後に、<<演算子の本体で現在の行if (sh)を返し、return << os;それ以外の場合は返します。これにより、プログラムの初期化としてtrueまたはfalseをColor::Modifier red(Color::FG_RED, BoolVar);設定できるコードを記述できますBoolVar。オンにすると画面に表示され、オフにするとファイルにリダイレクトされます。
rpsml、2015

42

必要な色を出力する前に、ターミナルにいることを確認してください:

[ -t 1 ] && echo 'Yes I am in a terminal'  # isatty(3) call in C

次に、それがカラーをサポートしているかどうか、ターミナル機能を確認する必要があります

terminfo (Linuxベース)のシステムでは、サポートされている色の数を次のように取得できます。

Number_Of_colors_Supported=$(tput colors)

termcap (BSDベースの)システムでは、サポートされている色の数を次のように取得できます。

Number_Of_colors_Supported=$(tput Co)

次に、決定を下します。

[ ${Number_Of_colors_Supported} -ge 8 ] && {
    echo 'You are fine and can print colors'
} || {
    echo 'Terminal does not support color'
}

ところで、以前はESC文字で提案されていたので、カラーリングは使用しないでください。特定の端末がサポートする正しい色を割り当てる端末機能への標準の呼び出しを使用します。

BSDベース
fg_black="$(tput AF 0)"
fg_red="$(tput AF 1)"
fg_green="$(tput AF 2)"
fg_yellow="$(tput AF 3)"
fg_blue="$(tput AF 4)"
fg_magenta="$(tput AF 5)"
fg_cyan="$(tput AF 6)"
fg_white="$(tput AF 7)"
reset="$(tput me)"
Linuxベース
fg_black="$(tput setaf 0)"
fg_red="$(tput setaf 1)"
fg_green="$(tput setaf 2)"
fg_yellow="$(tput setaf 3)"
fg_blue="$(tput setaf 4)"
fg_magenta="$(tput setaf 5)"
fg_cyan="$(tput setaf 6)"
fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"
使用
echo -e "${fg_red}  Red  ${fg_green} Bull ${reset}"

3
これはbash固有ではありませんか?-t 1は明らかにC ++では機能せず、このtputプログラムを呼び出すと、C ++プログラムの場合は非常に迂回的になります。
Macha 2012年

2
@Macha、はい、[ -t 1 ]それはsh / bash固有ですが、#(comment)サインの後の右側には同じことをするC関数があります。man 3 isatty主なポイントの説明を簡略化するために、シェルコマンドとして示されている例;)に役立つはずです。約についてはtput、標準の端末機能インターフェイスを照会するOPENソースユーティリティです。
Alex

1
なぜ人々がそれらのコードを直接使用することを提案し続けるのか分かりません。そのような仮定をすることは本当に、本当に悪い習慣です。これがシェル固有のコードであっても、初心者でもシェルの経験があれば誰でも翻訳できます。
osirisgothra 2014

34

他の人が述べたように、エスケープ文字を使用できます。簡単にするために、私のヘッダーを使用できます。

#ifndef _COLORS_
#define _COLORS_

/* FOREGROUND */
#define RST  "\x1B[0m"
#define KRED  "\x1B[31m"
#define KGRN  "\x1B[32m"
#define KYEL  "\x1B[33m"
#define KBLU  "\x1B[34m"
#define KMAG  "\x1B[35m"
#define KCYN  "\x1B[36m"
#define KWHT  "\x1B[37m"

#define FRED(x) KRED x RST
#define FGRN(x) KGRN x RST
#define FYEL(x) KYEL x RST
#define FBLU(x) KBLU x RST
#define FMAG(x) KMAG x RST
#define FCYN(x) KCYN x RST
#define FWHT(x) KWHT x RST

#define BOLD(x) "\x1B[1m" x RST
#define UNDL(x) "\x1B[4m" x RST

#endif  /* _COLORS_ */

ヘッダーのマクロを使用した例は次のとおりです。

#include <iostream>
#include "colors.h"
using namespace std;

int main()
{
    cout << FBLU("I'm blue.") << endl;
    cout << BOLD(FBLU("I'm blue-bold.")) << endl;
    return 0;
}

ここに画像の説明を入力してください


素晴らしいヘッダー!
Zheng Qu

16

私は次のソリューションを使用します。これは非常にシンプルでエレガントで、ソースに簡単に貼り付けることができ、Linux / Bashで動作します。

const std::string red("\033[0;31m");
const std::string green("\033[1;32m");
const std::string yellow("\033[1;33m");
const std::string cyan("\033[0;36m");
const std::string magenta("\033[0;35m");
const std::string reset("\033[0m");

std::cout << "Measured runtime: " << yellow << timer.count() << reset << std::endl;

14

私の理解から、典型的なANSIカラーコード

"\033[{FORMAT_ATTRIBUTE};{FORGROUND_COLOR};{BACKGROUND_COLOR}m{TEXT}\033[{RESET_FORMATE_ATTRIBUTE}m"

(名前とコーデック)で構成される

  • フォーマット属性

    { "Default", "0" },
    { "Bold", "1" },
    { "Dim", "2" },
    { "Underlined", "3" },
    { "Blink", "5" },
    { "Reverse", "7" },
    { "Hidden", "8" }
  • フォアグラウンドカラー

    { "Default", "39" },
    { "Black", "30" },
    { "Red", "31" },
    { "Green", "32" },
    { "Yellow", "33" },
    { "Blue", "34" },
    { "Magenta", "35" },
    { "Cyan", "36" },
    { "Light Gray", "37" },
    { "Dark Gray", "90" },
    { "Light Red", "91" },
    { "Light Green", "92" },
    { "Light Yellow", "93" },
    { "Light Blue", "94" },
    { "Light Magenta", "95" },
    { "Light Cyan", "96" },
    { "White", "97" }
  • 背景色

    { "Default", "49" },
    { "Black", "40" },
    { "Red", "41" },
    { "Green", "42" },
    { "Yellow", "43" },
    { "Blue", "44" },
    { "Megenta", "45" },
    { "Cyan", "46" },
    { "Light Gray", "47" },
    { "Dark Gray", "100" },
    { "Light Red", "101" },
    { "Light Green", "102" },
    { "Light Yellow", "103" },
    { "Light Blue", "104" },
    { "Light Magenta", "105" },
    { "Light Cyan", "106" },
    { "White", "107" }
  • テキスト

  • フォーマット属性のリセット

    { "All", "0" },
    { "Bold", "21" },
    { "Dim", "22" },
    { "Underlined", "24" },
    { "Blink", "25" },
    { "Reverse", "27" },
    { "Hidden", "28" }

この情報があれば、「私はバナナです!」という文字列に簡単に色を付けることができます。前景色「黄」と背景色「緑」はこんな感じ

"\033[0;33;42mI am a Banana!\033[0m"

または、C ++ライブラリcolorize

auto const& colorized_text = color::rize( "I am a banana!", "Yellow", "Green" );
std::cout << colorized_text << std::endl;

FORMAT ATTRIBUTEのその他の例はこちらここに画像の説明を入力してください


これははるかに優れており、PHP C ++拡張機能で使用できます。
Aftab Naveed

12

これは古いトピックですが、単純なCマクロで定義された色のサブクラスと静的メンバーがネストされたクラスを作成しました。

私はcolorこの投稿から、ユーザーno2pencilがdreamincode.netのColor Text In C Programmingから関数を取得しました。

このようにして、次のようにstd :: coutストリームで静的定数を使用できるようにしました。

cout << zkr::cc::fore::red << "This is red text. " 
     << zkr::cc::console << "And changing to console default colors, fg, bg."
     << endl;

クラスとテストプログラムのソースコードはここからダウンロードできます

cc::consoleコンソールのデフォルトの色と属性にリセットされcc::underline、テキストに下線が引かれます。これは、テストプログラムでテストしたパテで機能します。

色:

black
blue
red
magenta
green
cyan
yellow
white

lightblack
lightblue
lightred
lightmagenta
lightgreen
lightcyan
lightyellow
lightwhite

これは、静的クラスのforeback静的サブクラスの両方で使用できますcc

2017年を編集

ここでは、より実用的にするためにクラスコードを追加しています。

カラーコードマクロ:

#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"

画面の色または属性を定義するメインの色関数:

char *cc::color(int attr, int fg, int bg)
{
    static char command[13];

    /* Command is the control command to the terminal */
    sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
    return command;
}

ccolor.h

#include <stdio.h>

#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"

namespace zkr
{
    class cc
    {
    public:

        class fore
        {
        public:
            static const char *black;
            static const char *blue;
            static const char *red;
            static const char *magenta;
            static const char *green;
            static const char *cyan;
            static const char *yellow;
            static const char *white;
            static const char *console;

            static const char *lightblack;
            static const char *lightblue;
            static const char *lightred;
            static const char *lightmagenta;
            static const char *lightgreen;
            static const char *lightcyan;
            static const char *lightyellow;
            static const char *lightwhite;
        };

        class back
        {
        public:
            static const char *black;
            static const char *blue;
            static const char *red;
            static const char *magenta;
            static const char *green;
            static const char *cyan;
            static const char *yellow;
            static const char *white;
            static const char *console;

            static const char *lightblack;
            static const char *lightblue;
            static const char *lightred;
            static const char *lightmagenta;
            static const char *lightgreen;
            static const char *lightcyan;
            static const char *lightyellow;
            static const char *lightwhite;
        };

        static char *color(int attr, int fg, int bg);
        static const char *console;
        static const char *underline;
        static const char *bold;
    };
}

ccolor.cpp

#include "ccolor.h"

using namespace std;

namespace zkr
{
    enum Color
    {
        Black,
        Red,
        Green,
        Yellow,
        Blue,
        Magenta,
        Cyan,
        White,
        Default = 9
    };

    enum Attributes
    {
        Reset,
        Bright,
        Dim,
        Underline,
        Blink,
        Reverse,
        Hidden
    };

    char *cc::color(int attr, int fg, int bg)
    {
        static char command[13];
        /* Command is the control command to the terminal */
        sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
        return command;
    }

    const char *cc::console = CC_CONSOLE_COLOR_DEFAULT;
    const char *cc::underline = CC_ATTR(4);
    const char *cc::bold = CC_ATTR(1);

    const char *cc::fore::black = CC_FORECOLOR(30);
    const char *cc::fore::blue = CC_FORECOLOR(34);
    const char *cc::fore::red = CC_FORECOLOR(31);
    const char *cc::fore::magenta = CC_FORECOLOR(35);
    const char *cc::fore::green = CC_FORECOLOR(92);
    const char *cc::fore::cyan = CC_FORECOLOR(36);
    const char *cc::fore::yellow = CC_FORECOLOR(33);
    const char *cc::fore::white = CC_FORECOLOR(37);
    const char *cc::fore::console = CC_FORECOLOR(39);

    const char *cc::fore::lightblack = CC_FORECOLOR(90);
    const char *cc::fore::lightblue = CC_FORECOLOR(94);
    const char *cc::fore::lightred = CC_FORECOLOR(91);
    const char *cc::fore::lightmagenta = CC_FORECOLOR(95);
    const char *cc::fore::lightgreen = CC_FORECOLOR(92);
    const char *cc::fore::lightcyan = CC_FORECOLOR(96);
    const char *cc::fore::lightyellow = CC_FORECOLOR(93);
    const char *cc::fore::lightwhite = CC_FORECOLOR(97);

    const char *cc::back::black = CC_BACKCOLOR(40);
    const char *cc::back::blue = CC_BACKCOLOR(44);
    const char *cc::back::red = CC_BACKCOLOR(41);
    const char *cc::back::magenta = CC_BACKCOLOR(45);
    const char *cc::back::green = CC_BACKCOLOR(42);
    const char *cc::back::cyan = CC_BACKCOLOR(46);
    const char *cc::back::yellow = CC_BACKCOLOR(43);
    const char *cc::back::white = CC_BACKCOLOR(47);
    const char *cc::back::console = CC_BACKCOLOR(49);

    const char *cc::back::lightblack = CC_BACKCOLOR(100);
    const char *cc::back::lightblue = CC_BACKCOLOR(104);
    const char *cc::back::lightred = CC_BACKCOLOR(101);
    const char *cc::back::lightmagenta = CC_BACKCOLOR(105);
    const char *cc::back::lightgreen = CC_BACKCOLOR(102);
    const char *cc::back::lightcyan = CC_BACKCOLOR(106);
    const char *cc::back::lightyellow = CC_BACKCOLOR(103);
    const char *cc::back::lightwhite = CC_BACKCOLOR(107);
}

2
コードをありがとう。私は別の追加ANSIエスケープコードを太字のテキストを表示できるようにする:const char *cc::bold = CC_ATTR(1);
ドリューNoakes

追加ありがとうございます。これをクラスコードに含めました。
Christos Lytras 2013

9

端末でサポートされている場合は、エスケープシーケンスを使用できます。例えば:

echo \[\033[32m\]Hello, \[\033[36m\]colourful \[\033[33mworld!\033[0m\]

9

gon1332のヘッダーの拡張バージョン:

//
//  COLORS.h
//
//  Posted by Gon1332 May 15 2015 on StackOverflow
//  /programming/2616906/how-do-i-output-coloured-text-to-a-linux-terminal#2616912
//
//  Description: An easy header file to make colored text output to terminal second nature.
//  Modified by Shades Aug. 14 2018

// PLEASE carefully read comments before using this tool, this will save you a lot of bugs that are going to be just about impossible to find.
#ifndef COLORS_h
#define COLORS_h

/* FOREGROUND */
// These codes set the actual text to the specified color
#define RESETTEXT  "\x1B[0m" // Set all colors back to normal.
#define FOREBLK  "\x1B[30m" // Black
#define FORERED  "\x1B[31m" // Red
#define FOREGRN  "\x1B[32m" // Green
#define FOREYEL  "\x1B[33m" // Yellow
#define FOREBLU  "\x1B[34m" // Blue
#define FOREMAG  "\x1B[35m" // Magenta
#define FORECYN  "\x1B[36m" // Cyan
#define FOREWHT  "\x1B[37m" // White

/* BACKGROUND */
// These codes set the background color behind the text.
#define BACKBLK "\x1B[40m"
#define BACKRED "\x1B[41m"
#define BACKGRN "\x1B[42m"
#define BACKYEL "\x1B[43m"
#define BACKBLU "\x1B[44m"
#define BACKMAG "\x1B[45m"
#define BACKCYN "\x1B[46m"
#define BACKWHT "\x1B[47m"

// These will set the text color and then set it back to normal afterwards.
#define BLK(x) FOREBLK x RESETTEXT
#define RED(x) FORERED x RESETTEXT
#define GRN(x) FOREGRN x RESETTEXT
#define YEL(x) FOREYEL x RESETTEXT
#define BLU(x) FOREBLU x RESETTEXT
#define MAG(x) FOREMAG x RESETTEXT
#define CYN(x) FORECYN x RESETTEXT
#define WHT(x) FOREWHT x RESETTEXT

// Example usage: cout << BLU("This text's color is now blue!") << endl;

// These will set the text's background color then reset it back.
#define BackBLK(x) BACKBLK x RESETTEXT
#define BackRED(x) BACKRED x RESETTEXT
#define BackGRN(x) BACKGRN x RESETTEXT
#define BackYEL(x) BACKYEL x RESETTEXT
#define BackBLU(x) BACKBLU x RESETTEXT
#define BackMAG(x) BACKMAG x RESETTEXT
#define BackCYN(x) BACKCYN x RESETTEXT
#define BackWHT(x) BACKWHT x RESETTEXT

// Example usage: cout << BACKRED(FOREBLU("I am blue text on a red background!")) << endl;

// These functions will set the background to the specified color indefinitely.
// NOTE: These do NOT call RESETTEXT afterwards. Thus, they will set the background color indefinitely until the user executes cout << RESETTEXT
// OR if a function is used that calles RESETTEXT i.e. cout << RED("Hello World!") will reset the background color since it calls RESETTEXT.
// To set text COLOR indefinitely, see SetFore functions below.
#define SetBackBLK BACKBLK
#define SetBackRED BACKRED
#define SetBackGRN BACKGRN
#define SetBackYEL BACKYEL
#define SetBackBLU BACKBLU
#define SetBackMAG BACKMAG
#define SetBackCYN BACKCYN
#define SetBackWHT BACKWHT

// Example usage: cout << SetBackRED << "This text's background and all text after it will be red until RESETTEXT is called in some way" << endl;

// These functions will set the text color until RESETTEXT is called. (See above comments)
#define SetForeBLK FOREBLK
#define SetForeRED FORERED
#define SetForeGRN FOREGRN
#define SetForeYEL FOREYEL
#define SetForeBLU FOREBLU
#define SetForeMAG FOREMAG
#define SetForeCYN FORECYN
#define SetForeWHT FOREWHT

// Example usage: cout << SetForeRED << "This text and all text after it will be red until RESETTEXT is called in some way" << endl;

#define BOLD(x) "\x1B[1m" x RESETTEXT // Embolden text then reset it.
#define BRIGHT(x) "\x1B[1m" x RESETTEXT // Brighten text then reset it. (Same as bold but is available for program clarity)
#define UNDL(x) "\x1B[4m" x RESETTEXT // Underline text then reset it.

// Example usage: cout << BOLD(BLU("I am bold blue text!")) << endl;

// These functions will embolden or underline text indefinitely until RESETTEXT is called in some way.

#define SetBOLD "\x1B[1m" // Embolden text indefinitely.
#define SetBRIGHT "\x1B[1m" // Brighten text indefinitely. (Same as bold but is available for program clarity)
#define SetUNDL "\x1B[4m" // Underline text indefinitely.

// Example usage: cout << setBOLD << "I and all text after me will be BOLD/Bright until RESETTEXT is called in some way!" << endl;

#endif /* COLORS_h */

ご覧のとおり、背景色を一時的、無期限に設定する機能、その他の機能など、より多くの機能があります。また、初心者にもやさしく、すべての機能を覚えやすくなっています。

#include <iostream>
#include "COLORS.h"

int main() {
  std::cout << SetBackBLU << SetForeRED << endl;
  std::cout << "I am red text on a blue background! :) " << endl;
  return 0;
}

ヘッダーファイルをプロジェクトに含めるだけで、色付きのターミナル出力を使用して準備が整います。


3

テキストに色を付けるすばやく簡単な方法については、ここに私のヘッダーを試してください:Aediのカラーヘッダー


エスケープシーケンスカラーヘッダー

C ++を使用してUnixで出力に色を付けます!!


テキスト属性オプション:

ATTRIBUTES_OFF, BOLD, UNDERSCORE, BLINK, REVERSE_VIDEO, CONCEALED


カラーオプション:

BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE


フォーマット:

一般的な形式、必要な値を$ variable $に含めます

COLOR_$Foreground_Color$_$Background_Color$
COLOR_$Text_Attribute$_$Foreground_Color$_$Background_Color$
COLOR_NORMAL  // To set color to default

例えば

COLOR_BLUE_BLACK // Leave Text Attribute Blank if no Text Attribute appied
COLOR_UNDERSCORE_YELLOW_RED
COLOR_NORMAL


使用法:

テキストを出力する前に必要な色をストリーミングするために使用し、テキストを出力した後に再び色を通常に設定するために使用します。

cout << COLOR_BLUE_BLACK << "TEXT" << COLOR_NORMAL << endl;
cout << COLOR_BOLD_YELLOW_CYAN << "TEXT" << COLOR_NORMAL << endl;

これはリンクのみの回答であり、リンクがダウンすると無効になります。コードを追加するか、回答を詳しく説明してください
dgilperez '10

2
初心者はこちら...もう少し情報を追加しました。この作品を服用しますか?
Uduse、2015

@ sjm324 BLINKがサポートされているかどうかはあなたのシステムに基づいていると思います
Uduse

3

ANSIカラーコードを使用できます。

これらの関数を使用します。

enum c_color{BLACK=30,RED=31,GREEN=32,YELLOW=33,BLUE=34,MAGENTA=35,CYAN=36,WHITE=37};
enum c_decoration{NORMAL=0,BOLD=1,FAINT=2,ITALIC=3,UNDERLINE=4,RIVERCED=26,FRAMED=51};
void pr(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
  cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m";
}

void prl(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
   cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m"<<endl;
}

2

最善の方法はncursesライブラリを使用することです-単純な色の文字列を出力したいだけなら、これはナットをクラックするための大ハンマーかもしれません


3
@Nick ncursesを使用して、エコーで色付けを行うのは面倒です。:)
リングベアラー

2

OSXシェルでは、これは私のために機能します(「赤いテキスト」の前の2つのスペースを含む):

$ printf "\e[033;31m  red text\n"
$ echo "$(tput setaf 1)  red text"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.