Farbe einzelner Zeichen ändern?



  • Wie lassen sich in einer simplen Konsolenanwendung einzelne Zeichen farbig machen ohne das gleich der ganze Text seine Farbe mit ändert? Gibts da vielleicht Escapesequenzen? Die Idee ist z.B. ein Wort mit verschiedenfarbigen Zeichen auszugeben.



  • Dafür gibt es keine portable Lösung. Für welches OS programmierst du denn?



  • Janjan schrieb:

    Dafür gibt es keine portable Lösung. Für welches OS programmierst du denn?

    In MS Visual Studio 2008.



  • OS steht für Operating System, was übersetzt Betriebssystem heißt. Visual Studio ist kein Betriebssystem. Englisch ist eine Grundvoraussetzung für das Programmieren.

    Such im MSDN nach der Funktion SetConsoleTextAttribute(), damit färbst du um.



  • Janjan schrieb:

    OS steht für Operating System, was übersetzt Betriebssystem heißt. Visual Studio ist kein Betriebssystem. Englisch ist eine Grundvoraussetzung für das Programmieren.

    Such im MSDN nach der Funktion SetConsoleTextAttribute(), damit färbst du um.

    Super Forum! Sie haben mein Leben komplett verändert! 🙄 Eine flapsige Bemerkung abzugeben über anderer Leute Flüchtigkeitsfehler beim Lesen ist einfach, in der Lage zu sein ein simples Beispiel abzugeben an dem man klar sehen kann wie das Ganze funktionieren soll, würde hingegen von wahrer Größe zeugen. Glaubt ihr wirklich ich würde hier posten, wenn ich nicht schon woanders nachgeschaut hätte??? 🙄
    Färbt zudem der SetConsoleTextAttribute()-Befehl nicht den gesamten Text ein? Nochmal, mir geht es darum einzelne Zeichen innerhalb einer Ausgabezeile oder z.B. eines Wortes o.Ä.. möglichst einfach verschiedenfarbig einzufärben.

    ...und diesmal bitte ohne Sarkasmus, ich bin "Newbie" und jeder hat mal klein angefangen!



  • Onurk2401 schrieb:

    ein simples Beispiel abzugeben an dem man klar sehen kann wie das Ganze funktionieren soll

    Die korrekte Antwort lautet: Zeichen haben in C++ keine Farbe, deshalb kann man kein Beispiel bringen.

    Färbt zudem der SetConsoleTextAttribute()-Befehl nicht den gesamten Text ein?

    Du bist mit der Frage im falschen Forum, das hat mit C++ nichts zu tun. Davon abgesehen könntest doch du einfach mal die Dokumentation lesen, oder es vielleicht ausprobieren?



  • Onurk2401 schrieb:

    Janjan schrieb:

    OS steht für Operating System, was übersetzt Betriebssystem heißt. Visual Studio ist kein Betriebssystem. Englisch ist eine Grundvoraussetzung für das Programmieren.

    Such im MSDN nach der Funktion SetConsoleTextAttribute(), damit färbst du um.

    Super Forum! Sie haben mein Leben komplett verändert! 🙄 Eine flapsige Bemerkung abzugeben über anderer Leute Flüchtigkeitsfehler beim Lesen ist einfach, in der Lage zu sein ein simples Beispiel abzugeben an dem man klar sehen kann wie das Ganze funktionieren soll, würde hingegen von wahrer Größe zeugen. Glaubt ihr wirklich ich würde hier posten, wenn ich nicht schon woanders nachgeschaut hätte??? 🙄
    Färbt zudem der SetConsoleTextAttribute()-Befehl nicht den gesamten Text ein? Nochmal, mir geht es darum einzelne Zeichen innerhalb einer Ausgabezeile oder z.B. eines Wortes o.Ä.. möglichst einfach verschiedenfarbig einzufärben.

    ...und diesmal bitte ohne Sarkasmus, ich bin "Newbie" und jeder hat mal klein angefangen!

    Super User! Flennt wegen einer flappsigen Bemerkung gleich rum! Und wozu ein Beispiel? Hast du überhaupt in die Dokumentation geschaut? Dort wird auf ein Beispiel verwiesen. Und dort steht auch ganz klar, dass diese Funktion den folgenden geschrieben Text einfärbt: "This function affects text written after the function call." - Also Funktion aufrufen, Zeichen schreiben, Funktion wieder aufrufen.

    Aber hey! Lieber dumm flamen und auf vorgekauten Code hoffen! Das hat nichts mit Newbie sein zu tun, sondern schlichtweg fehlender Eigeninitiative.



  • So, und jetzt werden bitte alle wieder sachlich und geben nurnoch konstruktive Beiträge ab.
    Der Threadersteller sei darauf hingewiesen, dass es gerade für Neulinge sehr schlechter Stil ist, eine Frage zu posten, bevor man sich die mit "wichtig" gekennzeichneten Threads im betreffenden Forum durchgelesen hat. Dazu gehört auch der Thread, der in meiner Signatur verlinkt ist, und in dem steht, dass man sich möglichst nicht ins falsche Forum verirren sollte, wie hier geschehen.



  • Das er im falschen Forum gelandet ist, ist ja durch seine Unerfahrenheit zu entschuldigen. Aber auf einen ernstgemeinten Rat (Englisch lernen) und die Beantwortung seiner Frage (Verweis auf die Funktion) hat er pampig reagiert. In der Dokumentation dieser Funktion steht eindeutig, dass dieser Text den folgenden geschriebenen Text einfärbt - wonach er in seinem Posting gefragt hat. Also hat er eindeutig die Doku nicht gelesen. Dort wird auch ein Beispiel verwiesen.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ich glaube du meinst sowas:

    #include <windows.h>
    #include <iostream>

    using namespace std;

    HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);

    void gelb()
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    }

    void rot()
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_RED | FOREGROUND_INTENSITY);
    }

    void grun()
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    }

    void blue()
    {
    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,FOREGROUND_BLUE | FOREGROUND_INTENSITY);
    }

    int main()
    {

    gelb();
    cout<<"H";
    blue();
    cout<<"a";
    red();
    cout<<"l";
    grun();
    cout<<"l";
    gelb();
    cout<<"o";

    Sleep(1000);
    return 0;
    }


Anmelden zum Antworten