# Schriftfarbe ändern



## Westbär (20. Juni 2007)

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.


```
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ß


----------



## DeadWolfWalking (19. März 2008)

zur Änderung der Schriftfarbe fällt mir nur


```
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


```
#include <iostream>
```

den Befehl...


```
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:

```
#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 
nyooo viel Glück noch dass du viele gute antworten bekommst


----------



## DeadWolfWalking (19. März 2008)

mir ist doch noch etwas eingefallen:


```
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);
```

die Null ist der Farbwert.

```
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ß):

```
#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


----------

