2010-02-27 24 views
18
std::cout << "blblabla... [done]" << std::endl; 

Ist es möglich, [done] in einer anderen Farbe und möglicherweise fett zu machen? Ich verwende Windows 7Farben in C++ Win32 Konsole

Antwort

16

Dies hängt davon ab, welches Betriebssystem Sie verwenden.

Wenn Sie Windows verwenden wollen Sie SetConsoleTextAttribute:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // Get handle to standard output 
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE); 

Sie auch Werte kombinieren.

Eine Anwendung kann kombiniert die Vordergrund- und Hintergrundkonstanten verschiedene Farben erzielen. Zum Beispiel, die folgende Kombination ergibt hell Cyan Text auf einem blauen Hintergrund.

FOREGROUND_BLAU | FOREGROUND_GREEN | FOREGROUND_INTENSITÄT | BACKGROUND_BLUE

Sie können dann WriteFile oder WriteConsole verwenden, um tatsächlich die die Konsole zu schreiben.

+0

Ich frage mich, warum diese Antwort nicht akzeptiert wurde. – SwiftsNamesake

+0

Hallo, ich möchte ein Konsolenspiel machen und frage mich, ob es einen bestimmten Artikel oder eine Seite gibt, die alle diese verwandten Konsolenfunktionen beschreibt, um Textfarbe und so etwas zu ändern? –

-1

Ja, Sie können das System() verwenden; Funktion zum Ausführen von Befehlen von command.com und einer davon ist Farbe. Farbe a erhalten Sie das Grün, das Sie wollen. Sie können auch andere Farben aus der Hilfeoption color /? . und für die kühne Sache können Sie Zeichen aus Ascii-Diagramm verwenden, um das zu tun. wie "\ n" ist Newline.

6

Ja, senden Sie einfach eine standard escape sequence, z.

const char* green = "\033[0;32m"; 
    const char* white = "\033[0;37m"; 
    const char* red = "\033[0;31m"; 
    double profit = round(someComplicatedThing()); 
    std::cout << (profit < 0 ? red : (profit > 0 ? green : white)) 
       << "Profit is " << profit << white << std::endl; 

Sie erhalten auch fett im Vergleich zu normalen, farbigen Hintergrund usw. Die Wikipedia page on ANSI escape code Details hat, die Bash-Prompt HOWTO Beispiele hat.

+5

Vergessen Sie nicht zu dokumentieren, wie ANSI.SYS geladen wird, es ist nicht automatisch. –

+9

Dies funktioniert nicht unter Windows –

+2

Dies funktioniert nicht auf Windows von Anfang an. – Kyberias

3

You can use this tiny libraries which I have used personally before. Es ist sehr einfach zu verwenden und in Standard-Streams zu integrieren. Es hat eine klare Konsole Bildschirm-Funktionalität BTW. Dieses Beispiel stammt aus einem Code, den ich schrieb:

std::cout << con::clr; // Clear the Intro Screen 
// fg means the foreground 
std::cout << std::endl << std::endl << con::fg_green 
    << "\t\tFile Encrypted!"; 
-2

Eine schnelle Möglichkeit: include #include <stdlib.h> und dann system("color 5B"); hinzufügen, bevor Sie den gewünschten Text. So wird es wie folgt aussehen:

#include <stdlib.h> 
std::cout << "blblabla..."<<std::endl; 
system("color 5B"); 
std::cout<< "[done]" << std::endl; 

Sie können verschiedene Farben versuchen: 1A, 2B, 3C, 4F ...