Problem mit umlauten



  • Hi leute.

    Ich lerne gerade c++ und habe ein problem mit den umlauten.

    in meinem buch steht, das ich umlaute mit hilfe von hexdezimalzahlen schreiben kann.

    das mache ich auch genau so.

    \x81 = ü

    aber wenn ich bsw schreibe:

    std::cout << "Dr\x81cken Sie die Eingabetaste" << std::endl;
    

    und will es dann kompelieren. dann sagt mir VS 2008,
    "error C2022: '2076': Zu groß für ein Zeichen"

    es liegt auf jedenfall, an der escape sequenz, denn wenn ich was anderes schreibe, geht es.
    warum ist das so???

    Danke



  • Hi,

    du musst die Escape-Sequenz erst abschließen bevor du weitere Zeichen anhängst, z.B. so:

    std::cout << "Dr\x81" << "cken Sie die Eingabetaste" << std::endl;
    

    Viele Grüße, Chris



  • "Dr\x***81c***ken Sie die Eingabetaste"

    der compiler weiß nicht wo die Escapesequenz endet und zählt das c dazu, weil 81c ja eine gültige hex-zahl ist. aber eine zu große hex-zahl: dez 2076 = hex 81c

    daher, wenn auf die gewünschte hex-zahl ein zeichen aus 0..9 und a..f folgt, siehe lösung von Gast_Chris



  • Danke, aber das fuktioniert auch nicht. bekomme den selben fehler.

    Das ich die escape squenz beenden muss, bevor ich weiter schreiben kann, steht aber auch nicht im buch.

    dort steht ein programm, dass
    "Willkommen bei c++"
    auf dem bildschirm ausgeben soll.

    und im buch ist dies der code:

    #include <iostream>
    using namespace std;
    void main(void)
    {
        cout << "\x22Willkommen bei \x43++\"";
        cout << endl;
    }
    

    Da wird auch nichts vorher beendet.

    EDIT:

    AHAAAA, danke Anmerker.

    die sache mit dem 0-9 und a-f funktioniert. vielen dank.

    hatte das gerade anders probiert.

    also vielen dank.
    👍


Log in to reply