Umlaute



  • Hallo,
    wie kann ich in einem C++Programm Umlaute etc. darstellen, ohne das sie total verkrüppelt werden.
    Also ich meine den Befehl der in HTML in etwa ä oder ß und so entspricht

    armin



  • schue mal in die Konsolen FAQ
    ps. ich verscheibe mal den thread ins Konsolen Forum

    [ Dieser Beitrag wurde am 24.07.2002 um 21:18 Uhr von Dimah editiert. ]



  • #include <iostream.h> // cout
    #include <windows.h>  // CharToOem
    
    int main(int argc, char* argv[])
    {
        char szUmlauteVorher[50] = "Ändern,Öffnen,Schließen,Üben";
        char szUmlauteNachher[50] = "";
    
        CharToOem(szUmlauteVorher,szUmlauteNachher);
    
        cout << "Hier der String vor der Konvertierung  = " << szUmlauteVorher << endl << endl;
    
        cout << "Hier der String nach der Konvertierung = " << szUmlauteNachher << endl;
    
        return 0;
    }
    


  • Danke schon mal.

    Und einfacher geht des nicht? Ich muss das also immer zuerst in eine Variable einspeichern, und die dann bearbeiten??

    Armin



  • Hallo,

    "einfacher" geht's schon aber nur mit Marke Eigenbau...

    #include <string.h>
    #include <iostream.h>
    
    // Die Funktion sc liefert einen Zeiger auf einen String zurück.
    // Übergabeparameter ist ein Stringarray bzw. ein Stringkonstante.
    // Aufgabe der Funktion ist das konvertieren von Umlauten wie
    // Ü,ü,Ö,ö,Ä,ä und ß.
    // Erstellt am 08.08.2000 von T2000
    
    char* sc(char* String)
    {
        static char strnew[100]; // Maximale Stringlänge im Moment 99 Zeichen + '\0'
    
        int character=0;
    
        for(unsigned int i=0;i<strlen(String);i++)
        {
            character = String[i];
    
            switch(character)
            {
            case -42:               // Ö
                strnew[i] = '\x99';
                continue;
    
            case -36:               // Ü
                strnew[i] = '\x9A';
                continue;
    
            case -60:               // Ä
                strnew[i] = '\x8E';
                continue;
    
            case -28:               // ä
                strnew[i] = '\x84';
                continue;
    
            case -4:                // ü
                strnew[i] = '\x81';
                continue;
    
            case -10:               // ö
                strnew[i] = '\x94';
                continue;
    
            case -33:               // ß
                strnew[i] = '\xE1';
                continue;
    
            default:
                strnew[i] = String[i];
    
            } // Von switch
    
        } // Von for
    
        strnew[i]='\0'; // Nullzeichen anfügen.
    
        return strnew;
    }
    
    int main(int argc, char* argv[])
    {
    
        cout << "Schließen,Öffnen,Ändern,Üben" << endl;
        cout << sc("Schließen,Öffnen,Ändern,Üben") << endl;
    
        return 0;
    }
    


  • #include <iostream> // cout
    #include <windows.h> // CharToOem

    int main(int argc, char* argv[])
    {
    char szUmlauteVorher[50] = "Ändern,Öffnen,Üben,Schließen";
    char szUmlauteNachher[50] = "";
    char szUmlauteZurueck[50] = "";
    char test[50];
    char test2[50];

    CharToOem(szUmlauteVorher,szUmlauteNachher);

    std::cout << "vor der Konvertierung = " << szUmlauteVorher << std::endl;
    std::cout << "nach der Konvertierung = " << szUmlauteNachher << std::endl;

    return 0;
    system("PAUSE");
    }



  • Gerard schrieb:

    schue mal in die Konsolen FAQ
    ps. ich verscheibe mal den thread ins Konsolen Forum

    [ Dieser Beitrag wurde am 24.07.2002 um 21:18 Uhr von Dimah editiert. ]

    Das hab ich mal Versucht, aber mein Compiler hat mir ne Fehlermeldung ausgegeben!



  • du kannst au den ascii zeichesatz verwenden und dann die hex zahlen verwenden
    -> http://www.physik.fu-berlin.de/~goerz/misc/ascii.gif



  • Also mit Variablen geht's so:

    const unsigned char AE = static_cast<unsigned char>(142);
    const unsigned char ae = static_cast<unsigned char>(132);
    const unsigned char OE = static_cast<unsigned char>(153);
    const unsigned char oe = static_cast<unsigned char>(148);
    const unsigned char UE = static_cast<unsigned char>(154);
    const unsigned char ue = static_cast<unsigned char>(129);
    const unsigned char ss = static_cast<unsigned char>(225);
    

Anmelden zum Antworten