Überprüfen Sie die Datenbank mit den Terminalfunktionen, um festzustellen, wozu das Terminal in der Lage ist. siehe termcap(5).
Jrockway
1
Schauen Sie sich ein Code-Snippet an, das ich hier eingefügt habe . Es ist ein kleines Tool, das seine Ausgabe mithilfe einiger Makros einfärbt.
Epatel
7
"Die termcap-Datenbank ist eine veraltete Funktion zur Beschreibung der Funktionen von Zeichenzellen-Terminals und -Druckern. Sie wird nur für Funktionen mit alten Programmen beibehalten. Neue Programme sollten die terminfo(5)Datenbank und die zugehörigen Bibliotheken verwenden." -termcap(5)
Wenn Sie fortgeschrittene Dinge mit Farbdruck machen möchten, empfehle ich Ihnen, diesen Artikel zu lesen . Ich fand es sehr hilfreich
SubMachine
Antworten:
408
Sie müssen ANSI-Farbcodes ausgeben . Beachten Sie, dass dies nicht von allen Terminals unterstützt wird. Wenn Farbsequenzen nicht unterstützt werden, wird Müll angezeigt.
Beispiel:
cout <<"\033[1;31mbold red text\033[0m\n";
Hier \033ist das ESC-Zeichen ASCII 27. Es folgt [, dann werden null oder mehr Zahlen durch ;und schließlich der Buchstabe getrennt m. Die Zahlen beschreiben die Farbe und das Format, zu denen ab diesem Zeitpunkt gewechselt werden soll.
Die Codes für Vordergrund- und Hintergrundfarben sind:
foreground background
black 3040
red 3141
green 3242
yellow 3343
blue 3444
magenta 3545
cyan 3646
white 3747
Zusätzlich können Sie diese verwenden:
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
Lesen Sie den Wert der TERMUmgebungsvariablen , um festzustellen, ob Ihr Terminal Farbsequenzen unterstützt . Es soll den besonderen verwendeten Terminaltyp angeben (zB vt100, gnome-terminal, xterm, screen, ...). Dann schauen Sie in der terminfo-Datenbank nach . Überprüfen Sie die colorsFähigkeit.
Ich benutze es, um "Manipulatoren" wie const std::string red("\033[0;31m");oder zu definieren const std::string reset("\033[0m");. Dann kann ich einfach schreiben cout << red << "red text" << reset << endl;.
Ich habe eine C ++ - Klasse geschrieben, mit der die Vordergrund- und Hintergrundfarbe der Ausgabe festgelegt werden kann. Dieses Beispielprogramm dient als Beispiel für das Drucken This ->word<- is red.und Formatieren, sodass die Vordergrundfarbe wordrot ist.
#include"colormod.h"// namespace Color#include<iostream>usingnamespace std;int main(){Color::Modifier red(Color::FG_RED);Color::Modifier def(Color::FG_DEFAULT);
cout <<"This ->"<< red <<"word"<< def <<"<- is red."<< endl;}
Möglicherweise möchten Sie der Klasse zusätzliche Funktionen hinzufügen. Es ist zum Beispiel möglich, die Farbe Magenta und sogar Stile wie Fettdruck hinzuzufügen . Dazu nur ein weiterer Eintrag in die CodeAufzählung. Dies ist eine gute Referenz.
Wenn Sie operator<<für definieren Code, können Sie direkt std::cout << Color::FG_RED;anstelle von schreiben std::cout << Modifier(Color::FG_RED);. Das heißt, Modifierwürde nicht benötigt werden.
Nawaz
2
@Nawaz Gute Idee. Hier ist eine Implementierung wie diese: pastebin.com/zWC3t9hC . Ich werde jedoch meine ursprüngliche Implementierung in der Antwort beibehalten, da ich der Meinung bin, dass sie erweiterbarer ist.
Joel Sjögren
1
Eigentlich gefällt mir die erste Implementierung besser, da Sie ein Flag hinzufügen können, um Farben ein- oder auszuschalten: bool sh;Zur Klasse hinzufügen und den Konstruktor in ändern Modifier (Code pCode, bool show = true) : code(pCode), sh(show) {}. Schließlich geben Sie im Hauptteil des <<Bedieners die aktuelle Zeile zurück if (sh)und return << os;ansonsten. Auf diese Weise können Sie Ihren Code so schreiben, Color::Modifier red(Color::FG_RED, BoolVar);dass Sie ihn BoolVarals Initialisierung des Programms als wahr oder falsch festlegen können . Sie können es aktivieren, um es auf dem Bildschirm anzuzeigen, und deaktivieren, um zu einer Datei umzuleiten.
rpsml
42
Bevor Sie eine Farbe ausgeben, die Sie benötigen, stellen Sie sicher, dass Sie sich in einem Terminal befinden:
[-t 1]&& echo 'Yes I am in a terminal'# isatty(3) call in C
Dann müssen Sie die Terminalfähigkeit überprüfen, wenn sie Farbe unterstützt
Auf Systemen mit terminfo(Linux-basiert) können Sie die Anzahl der unterstützten Farben als erhalten
Number_Of_colors_Supported=$(tput colors)
Auf Systemen mit termcap(BSD-basiert) können Sie die Anzahl der unterstützten Farben als erhalten
Number_Of_colors_Supported=$(tput Co)
Dann treffen Sie Ihre Entscheidung:
[ ${Number_Of_colors_Supported}-ge 8]&&{
echo 'You are fine and can print colors'}||{
echo 'Terminal does not support color'}
Übrigens, verwenden Sie keine Farben, wie sie zuvor für ESC-Zeichen vorgeschlagen wurden. Verwenden Sie die Standardfunktion für Call-to-Terminals, mit der Sie RICHTIGE Farben für das jeweilige Terminal erhalten.
BSD-basiert
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)"
Ist diese Bash nicht spezifisch? -t 1 funktioniert offensichtlich nicht in C ++, und das Aufrufen dieses tput-Programms macht es in einem C ++ - Programm sehr umständlich.
Macha
2
@Macha, ja, [ -t 1 ]es ist sh / bash-spezifisch, aber auf der rechten Seite nach dem #(comment)Zeichen gibt es eine C-Funktion, die dasselbe tut. man 3 isattysollte dabei helfen;) Beispiel als Shell-Befehle gezeigt, um die Erklärung des Hauptpunktes zu vereinfachen. Was tputdas OPEN-Quelldienstprogramm betrifft, um die Standardschnittstelle für Terminalfunktionen abzufragen.
Alex
1
Ich bin mir nicht sicher, warum die Leute immer wieder vorschlagen, diese Codes direkt zu verwenden. Es ist wirklich sehr, sehr schlecht, solche Annahmen zu treffen. Selbst wenn es sich um Shell-spezifischen Code handelt, kann er von jedem übersetzt werden, der selbst über unerfahrene Shell-Erfahrung verfügt.
Osirisgothra
34
Wie bereits erwähnt, können Sie Escape-Zeichen verwenden. Sie können meinen Header verwenden, um es einfacher zu machen:
#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_ */
Ein Beispiel für die Verwendung der Makros des Headers könnte sein:
Dies ist viel besser und ich kann es in meiner PHP C ++ - Erweiterung verwenden.
Aftab Naveed
12
Dies ist ein altes Thema, aber ich habe eine Klasse mit verschachtelten Unterklassen und statischen Elementen für Farben geschrieben, die durch einfache C-Makros definiert werden.
Ich habe die colorFunktion aus diesem Beitrag Color Text In C Programming in dreamincode.net von Benutzer no2pencil erhalten.
Ich habe es so gemacht, um die statischen Konstanten in std :: cout stream wie folgt verwenden zu können:
cout << zkr::cc::fore::red <<"This is red text. "<< zkr::cc::console <<"And changing to console default colors, fg, bg."<< endl;
Die Klasse und ein Quellcode des Testprogramms können hier heruntergeladen werden .
cc::consolewird auf die Standardfarben und -attribute der Konsole zurückgesetzt, cc::underlineunterstreicht den Text, der auf Kitt funktioniert, den ich im Testprogramm getestet habe.
Farben:
black
blue
red
magenta
green
cyan
yellow
white
lightblack
lightblue
lightred
lightmagenta
lightgreen
lightcyan
lightyellow
lightwhite
Welche kann mit beiden foreund backstatischen Unterklassen der ccstatischen Klasse verwendet werden.
EDIT 2017
Ich füge hier nur den Klassencode hinzu, um praktischer zu sein.
und die Hauptfarbfunktion, die eine Farbe oder ein Attribut für den Bildschirm definiert:
char*cc::color(int attr,int fg,int bg){staticchar 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:staticconstchar*black;staticconstchar*blue;staticconstchar*red;staticconstchar*magenta;staticconstchar*green;staticconstchar*cyan;staticconstchar*yellow;staticconstchar*white;staticconstchar*console;staticconstchar*lightblack;staticconstchar*lightblue;staticconstchar*lightred;staticconstchar*lightmagenta;staticconstchar*lightgreen;staticconstchar*lightcyan;staticconstchar*lightyellow;staticconstchar*lightwhite;};class back
{public:staticconstchar*black;staticconstchar*blue;staticconstchar*red;staticconstchar*magenta;staticconstchar*green;staticconstchar*cyan;staticconstchar*yellow;staticconstchar*white;staticconstchar*console;staticconstchar*lightblack;staticconstchar*lightblue;staticconstchar*lightred;staticconstchar*lightmagenta;staticconstchar*lightgreen;staticconstchar*lightcyan;staticconstchar*lightyellow;staticconstchar*lightwhite;};staticchar*color(int attr,int fg,int bg);staticconstchar*console;staticconstchar*underline;staticconstchar*bold;};}
Danke für den Code. Ich habe einen weiteren ANSI-Escape-Code hinzugefügt , um die Anzeige von fettem Text zu ermöglichen:const char *cc::bold = CC_ATTR(1);
Drew Noakes
Danke für den Zusatz. Ich habe dies in den Klassencode aufgenommen.
Christos Lytras
9
Sie können Escape-Sequenzen verwenden, wenn Ihr Terminal dies unterstützt. Zum Beispiel:
//// 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.#defineBackBLK(x) BACKBLK x RESETTEXT
#defineBackRED(x) BACKRED x RESETTEXT
#defineBackGRN(x) BACKGRN x RESETTEXT
#defineBackYEL(x) BACKYEL x RESETTEXT
#defineBackBLU(x) BACKBLU x RESETTEXT
#defineBackMAG(x) BACKMAG x RESETTEXT
#defineBackCYN(x) BACKCYN x RESETTEXT
#defineBackWHT(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.#defineSetBackBLK BACKBLK
#defineSetBackRED BACKRED
#defineSetBackGRN BACKGRN
#defineSetBackYEL BACKYEL
#defineSetBackBLU BACKBLU
#defineSetBackMAG BACKMAG
#defineSetBackCYN BACKCYN
#defineSetBackWHT 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)#defineSetForeBLK FOREBLK
#defineSetForeRED FORERED
#defineSetForeGRN FOREGRN
#defineSetForeYEL FOREYEL
#defineSetForeBLU FOREBLU
#defineSetForeMAG FOREMAG
#defineSetForeCYN FORECYN
#defineSetForeWHT 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.#defineSetBOLD"\x1B[1m"// Embolden text indefinitely.#defineSetBRIGHT"\x1B[1m"// Brighten text indefinitely. (Same as bold but is available for program clarity)#defineSetUNDL"\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 */
Wie Sie sehen können, verfügt es über mehr Funktionen, z. B. die Möglichkeit, die Hintergrundfarbe vorübergehend, unbegrenzt festzulegen, und andere Funktionen. Ich glaube auch, dass es ein bisschen anfängerfreundlicher ist und es einfacher ist, sich an alle Funktionen zu erinnern.
#include<iostream>#include"COLORS.h"int main(){
std::cout <<SetBackBLU<<SetForeRED<< endl;
std::cout <<"I am red text on a blue background! :) "<< endl;return0;}
Fügen Sie einfach die Header-Datei in Ihr Projekt ein und Sie können mit der farbigen Terminalausgabe rocken und rollen.
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
Format:
Allgemeines Format, geben Sie den gewünschten Wert in $ variable $ ein
COLOR_$Foreground_Color$_$Background_Color$
COLOR_$Text_Attribute$_$Foreground_Color$_$Background_Color$
COLOR_NORMAL // To set color to default
z.B
COLOR_BLUE_BLACK // Leave Text Attribute Blank if no Text Attribute appied
COLOR_UNDERSCORE_YELLOW_RED
COLOR_NORMAL
Verwendungszweck:
Verwenden Sie einfach, um die gewünschte Farbe zu streamen, bevor Sie Text ausgeben, und verwenden Sie sie erneut, um die Farbe nach der Textausgabe auf normal zu setzen.
Der beste Weg ist, die ncurses-Bibliothek zu verwenden - obwohl dies ein Vorschlaghammer sein kann, um eine Nuss zu knacken, wenn Sie nur eine einfache farbige Zeichenfolge ausgeben möchten
termcap(5)
.terminfo(5)
Datenbank und die zugehörigen Bibliotheken verwenden." -termcap(5)
Antworten:
Sie müssen ANSI-Farbcodes ausgeben . Beachten Sie, dass dies nicht von allen Terminals unterstützt wird. Wenn Farbsequenzen nicht unterstützt werden, wird Müll angezeigt.
Beispiel:
Hier
\033
ist das ESC-Zeichen ASCII 27. Es folgt[
, dann werden null oder mehr Zahlen durch;
und schließlich der Buchstabe getrenntm
. Die Zahlen beschreiben die Farbe und das Format, zu denen ab diesem Zeitpunkt gewechselt werden soll.Die Codes für Vordergrund- und Hintergrundfarben sind:
Zusätzlich können Sie diese verwenden:
In der Tabelle auf Wikipedia finden Sie weitere, weniger weit verbreitete Codes.
Lesen Sie den Wert der
TERM
Umgebungsvariablen , um festzustellen, ob Ihr Terminal Farbsequenzen unterstützt . Es soll den besonderen verwendeten Terminaltyp angeben (zBvt100
,gnome-terminal
,xterm
,screen
, ...). Dann schauen Sie in der terminfo-Datenbank nach . Überprüfen Sie diecolors
Fähigkeit.quelle
m
ich?\033[
undm
markieren Sie den Anfang und das Ende der Escape-Sequenz für ANSI-Farbcodes. Ref: en.wikipedia.org/wiki/ANSI_escape_code#CSI_codesconst std::string red("\033[0;31m");
oder zu definierenconst std::string reset("\033[0m");
. Dann kann ich einfach schreibencout << red << "red text" << reset << endl;
.Grundlagen
Ich habe eine C ++ - Klasse geschrieben, mit der die Vordergrund- und Hintergrundfarbe der Ausgabe festgelegt werden kann. Dieses Beispielprogramm dient als Beispiel für das Drucken
This ->word<- is red.
und Formatieren, sodass die Vordergrundfarbeword
rot ist.Quelle
Fortgeschrittene
Möglicherweise möchten Sie der Klasse zusätzliche Funktionen hinzufügen. Es ist zum Beispiel möglich, die Farbe Magenta und sogar Stile wie Fettdruck hinzuzufügen . Dazu nur ein weiterer Eintrag in die
Code
Aufzählung. Dies ist eine gute Referenz.quelle
operator<<
für definierenCode
, können Sie direktstd::cout << Color::FG_RED;
anstelle von schreibenstd::cout << Modifier(Color::FG_RED);
. Das heißt,Modifier
würde nicht benötigt werden.bool sh;
Zur Klasse hinzufügen und den Konstruktor in ändernModifier (Code pCode, bool show = true) : code(pCode), sh(show) {}
. Schließlich geben Sie im Hauptteil des<<
Bedieners die aktuelle Zeile zurückif (sh)
undreturn << os;
ansonsten. Auf diese Weise können Sie Ihren Code so schreiben,Color::Modifier red(Color::FG_RED, BoolVar);
dass Sie ihnBoolVar
als Initialisierung des Programms als wahr oder falsch festlegen können . Sie können es aktivieren, um es auf dem Bildschirm anzuzeigen, und deaktivieren, um zu einer Datei umzuleiten.Bevor Sie eine Farbe ausgeben, die Sie benötigen, stellen Sie sicher, dass Sie sich in einem Terminal befinden:
Dann müssen Sie die Terminalfähigkeit überprüfen, wenn sie Farbe unterstützt
Auf Systemen mit
terminfo
(Linux-basiert) können Sie die Anzahl der unterstützten Farben als erhaltenAuf Systemen mit
termcap
(BSD-basiert) können Sie die Anzahl der unterstützten Farben als erhaltenDann treffen Sie Ihre Entscheidung:
Übrigens, verwenden Sie keine Farben, wie sie zuvor für ESC-Zeichen vorgeschlagen wurden. Verwenden Sie die Standardfunktion für Call-to-Terminals, mit der Sie RICHTIGE Farben für das jeweilige Terminal erhalten.
BSD-basiert Linux-basiert Benutzen alsquelle
[ -t 1 ]
es ist sh / bash-spezifisch, aber auf der rechten Seite nach dem#(comment)
Zeichen gibt es eine C-Funktion, die dasselbe tut.man 3 isatty
sollte dabei helfen;) Beispiel als Shell-Befehle gezeigt, um die Erklärung des Hauptpunktes zu vereinfachen. Wastput
das OPEN-Quelldienstprogramm betrifft, um die Standardschnittstelle für Terminalfunktionen abzufragen.Wie bereits erwähnt, können Sie Escape-Zeichen verwenden. Sie können meinen Header verwenden, um es einfacher zu machen:
Ein Beispiel für die Verwendung der Makros des Headers könnte sein:
quelle
Ich verwende die folgende Lösung, sie ist recht einfach und elegant, kann leicht in die Quelle eingefügt werden und funktioniert unter Linux / Bash:
quelle
Nach meinem Verständnis ein typischer ANSI-Farbcode
besteht aus (Name und Codec)
FORMATATTRIBUT
VORFARBE FARBE
HINTERGRUNDFARBE
TEXT
RESET FORMAT ATTRIBUTE
Mit diesen Informationen ist es einfach, eine Zeichenfolge "Ich bin eine Banane!" mit der Grundfarbe "Gelb" und der Hintergrundfarbe "Grün" so
Oder mit einer C ++ - Bibliothek kolorieren
Weitere Beispiele mit FORMAT ATTRIBUTE hier
quelle
Dies ist ein altes Thema, aber ich habe eine Klasse mit verschachtelten Unterklassen und statischen Elementen für Farben geschrieben, die durch einfache C-Makros definiert werden.
Ich habe die
color
Funktion aus diesem Beitrag Color Text In C Programming in dreamincode.net von Benutzer no2pencil erhalten.Ich habe es so gemacht, um die statischen Konstanten in std :: cout stream wie folgt verwenden zu können:
Die Klasse und ein Quellcode des Testprogramms können hier heruntergeladen werden .
cc::console
wird auf die Standardfarben und -attribute der Konsole zurückgesetzt,cc::underline
unterstreicht den Text, der auf Kitt funktioniert, den ich im Testprogramm getestet habe.Farben:
Welche kann mit beiden
fore
undback
statischen Unterklassen dercc
statischen Klasse verwendet werden.EDIT 2017
Ich füge hier nur den Klassencode hinzu, um praktischer zu sein.
Die Farbcode-Makros:
und die Hauptfarbfunktion, die eine Farbe oder ein Attribut für den Bildschirm definiert:
ccolor.h
ccolor.cpp
quelle
const char *cc::bold = CC_ATTR(1);
Sie können Escape-Sequenzen verwenden, wenn Ihr Terminal dies unterstützt. Zum Beispiel:
quelle
Eine erweiterte Version des Headers von gon1332:
Wie Sie sehen können, verfügt es über mehr Funktionen, z. B. die Möglichkeit, die Hintergrundfarbe vorübergehend, unbegrenzt festzulegen, und andere Funktionen. Ich glaube auch, dass es ein bisschen anfängerfreundlicher ist und es einfacher ist, sich an alle Funktionen zu erinnern.
Fügen Sie einfach die Header-Datei in Ihr Projekt ein und Sie können mit der farbigen Terminalausgabe rocken und rollen.
quelle
Probieren Sie meine Kopfzeile hier aus, um schnell und einfach Text einzufärben : Aedis Farbkopfzeile
Escape-Sequence-Color-Header
Färben Sie Ihre Ausgabe in Unix mit C ++!
Textattributoptionen:
Farboptionen:
Format:
Allgemeines Format, geben Sie den gewünschten Wert in $ variable $ ein
z.B
Verwendungszweck:
Verwenden Sie einfach, um die gewünschte Farbe zu streamen, bevor Sie Text ausgeben, und verwenden Sie sie erneut, um die Farbe nach der Textausgabe auf normal zu setzen.
quelle
Sie können ANSI-Farbcodes verwenden.
Verwenden Sie diese Funktionen.
quelle
Der beste Weg ist, die ncurses-Bibliothek zu verwenden - obwohl dies ein Vorschlaghammer sein kann, um eine Nuss zu knacken, wenn Sie nur eine einfache farbige Zeichenfolge ausgeben möchten
quelle
Unter OSX-Shell funktioniert dies für mich (einschließlich 2 Leerzeichen vor "rotem Text"):
quelle