Buchstaben in Strings mit #define ersetzen (C++)?

...komplette Frage anzeigen

3 Antworten

C++, Zeichensätze, Unicode und besonders die Konsole unter Windows sind eine schwierige Kombination. ><

Mit dem Thema werden ganze Kapitel gefüllt! :)

Ohne jetzt auf Details eingehen zu wollen, probier doch mal folgendes aus (möglich seit C++11; achte auf Compilersupport!):

cout << u8"Du bist vollj\u00E4hrig." << endl;

Das u8 direkt vor dem String-Literal zeigt an, dass dieser UTF-8 kodiert ist. Und da wir keine ISO-8859-X Kodierung verwenden, benutzen wir den Code-Point 0xE4 des Unicode-Zeichensatzes anstelle von 0x84. (In der kompilierten Binärdatei steht dann "vollj\xC3\xA4hrig", also 0x84 als UTF-8 kodiert!)

Falls das nicht klappt, kommst du nicht drum herum, dich genauer in das Thema einzulesen! Das Ganze ist einfach zu groß, um dir hier alles erklären zu können. Sorry!

Trotzdem viel Erfolg! :)

Das funktioniert nicht auf diese Weise. Ein Text ist ein Text, darin wird nichts ersetzt.

Das wird wohl an dem "ä" liegen. So etwas ist als Präprozessordirektive meines Wissens nicht erlaubt.

Nachtrag: Abgesehen davon erstzt so eine Direktive nur DEFINES, die auch als Variablen im Code stehen... ein einzelner Buchstabe in eine String landet beim Kompilieren ganz woanders und wird nicht ersetzt...

Für dein Vorhaben, über das sich nur spekulieren lässt, wäre es sinnvoller, wenn du dich mit String-Encodings unter c++ beschäftigst. Ich empfehle UTF-8.

Danke für deine Antwort, bei diesem Code handelt es sich nur um einen Beispielcode der keinen wirklichen Nutzen hat außer mit der Sprache etwas mehr vertraut zu werden.

0

Was möchtest Du wissen?