Problem mit Umlaut



  • Hallo,

    ich benutze als umlaut für ü ä ö \x81 \x84 \x94. Wenn ich diese aber in Kombination mit c also z.b. \x81c wie in dem Wort t\81chtig (tüchtig) verwende schickt er mir folgende Fehlermeldung: [Warning] hex escape sequence out of range. Sobald ich das c oder z.b. \x81c entferne ist das Problem verschwunden. Wie kann ich das Problem lösen???

    😕 Vielen Dank





  • Nice... vielen Dank! Schon ausprobiert! Super!



  • Statt der dortigen Lösung mit dem \b würde ich persönlich eher preferieren, das String-Literal aufzuteilen.

    // Vorgeschlagene Version
    cout << "Oberfl\x84 \bche" << endl;
    
    // Imho besser
    cout << "Oberfl\x84""che" << endl;
    

    Grund: die Funktion, dass hintereinander geschriebene String-Literale vom Compiler nach Interpretation der Escape-Sequenzen automatisch zusammengefügt werden, ist unter anderem genau für solche Fälle gedacht. Die \b -Variante kommt mir immer vor wie ein Dirty Hack. Was ist, wenn man mal ein System hab, was Löschen von Zeichen in der Konsole nicht unterstützt? Dann guckt man mit seiner Oberflä che in die Rö hre. Außerdem verlagert man ein Problem in der Sprachsyntax auf ein Problem zur Laufzeit. Das ist in etwa so (wenn auch in abgeschwächter Form), wie als würde man Vererbung mit irgendwelchen Pointer-Konstrukten zur Laufzeit nachbauen, weil man den Doppelpunkt nicht auf seiner Tastatur findet.
    Darüber hinaus finde ich meine Variante lesbarer (man sieht viel eher, was der jenige eigentlich will) und sie ist etwas kürzer.


Log in to reply