Schriftfarbe ändern

Westbär

Mitglied
Hallo,
Ich habe ein Konsolen Programm für UNIX/Linux. Eine ganz kleine aus Spaß geschriebene Bash/Shell/Prompt.
Für mich und meine Kollegen ist das Script aber unübersichtlich, man verwechselt es mit der normalen Konsole.
Nun, wie kann ich eine Prompt einfärben?
Folgendes wird ausgegeben in meinem C++ Script:

Nun will ich diesen Teil oben einfärben. Die Antwort soll aber immer noch weiß bleiben.
Und evt. andere strings (std::cout) möchte ich auch einfärben.

Code:
int main() {         
    std::cout << "**** Willkommen ****       \n";
    std::string prompt(">  "),command;
    while(string_to_lower(command) != "exit"){
	    std::cout << prompt;
           std::getline(std::cin,command); 
    }
}


Ich hoffe ihr könnt mir helfen.


Gruß
 
zur Änderung der Schriftfarbe fällt mir nur

Code:
system("COLOR 0C");

ein... dass hat aber den Nachteil dass es den ganzen screen umfärbt...
Ich glaub dass ist also nicht so gut...

einen anderen Tipp hätte ich allerdings noch :)
wenn du nach

Code:
#include <iostream>

den Befehl...

Code:
using namespace std;

...einfügst, dann kannst du dir das lästige std:: vor dem cin-, cout- und string-Befehl sparen ;)
macht das schreiben schneller und unkomplizierter

demnach würde dein script z.B. folgendermaßen aussehen:
Code:
#include <iostream>

using namespace std;

int main() {
    system("COLOR 4C");
    cout << "**** Willkommen ****       \n";
    textcolor("white");
    string prompt(">  "),command;
    while(string_to_lower(command) != "exit"){
	    cout << prompt;
           getline(cin,command); 
    }
}

aber bitte nich hauen, wie gesagt der Befehl system("COLOR 0C"); färbt den ganzen screen :p
nyooo viel Glück noch dass du viele gute antworten bekommst :)
 
mir ist doch noch etwas eingefallen:

Code:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);

die Null ist der Farbwert.
Code:
Farbwerte:
 0 = Schwarz
 1 = Dunkelblau
 2 = Dunkelgrün
 3 = Blaugrün
 4 = Dunkelrot
 5 = Lila
 6 = Ocker
 7 = Hellgrau
8 = Dunkelgrau
9 = Blau
10 = Grün
11 = Zyan
12 = Rot
13 = Magenta
14 = Gelb
15 = Weiß

Dein script würde sich dadurch wie folgt verändern (Willkommen=rot,rest=weiß):
Code:
#include <iostream>

using namespace std;

int main() {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
    cout << "**** Willkommen ****       \n";
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
    string prompt(">  "),command;
    while(string_to_lower(command) != "exit"){
           cout << prompt;
           getline(cin,command); 
    }
}

so sollte es einwandfrei funktionieren ;)

edit: es könnte sein dass du die windows.h für das verwenden des Befehls brauchst...
das würde allerdings bedeuten dass du Probleme bei ujnix-Systemen haben würdest >.<
musst du mal testen...
ich hab grad leider nicht die Möglichkeit dazu

wünsch dir viel Glück :)
 
Zuletzt bearbeitet:
Zurück