Zeichenketten ohne T()-Makro



  • ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.



  • DrGreenthumb schrieb:

    ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.

    UTF8-Codierter Quelltext ist IIRC nicht standardkompatibel. Der Standard erlaubt nur einen reltiv beschränkten Zeichensatz.



  • daersc schrieb:

    Ich finde solche Makros irgendwie unschön...
    Lässt sich das irgendwie besser lösen?

    Wenn du diese Möglichkeit unschön findest, solltest du dir vielleicht überlegen, ob du wirklich so oft eine Unterscheidung brauchst und nicht direkt sagen kannst, ob char - oder wchar_t -Arrays benötigt werden...



  • pumuckl schrieb:

    DrGreenthumb schrieb:

    ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.

    UTF8-Codierter Quelltext ist IIRC nicht standardkompatibel. Der Standard erlaubt nur einen reltiv beschränkten Zeichensatz.

    Und was sollte das nützen? Ein String-Literal ist per Definition ein char-Array und kein wchar_t-Array. Das Einzige, das mir dazu einfällt, wäre eine Compiler-Option ("-wchar-strings" oder so), aber vermutlich würde so etwas mehr schaden als nützen....

    Stefan.



  • Nexus schrieb:

    daersc schrieb:

    Ich finde solche Makros irgendwie unschön...
    Lässt sich das irgendwie besser lösen?

    Wenn du diese Möglichkeit unschön findest, solltest du dir vielleicht überlegen, ob du wirklich so oft eine Unterscheidung brauchst und nicht direkt sagen kannst, ob char - oder wchar_t -Arrays benötigt werden...

    Naja - manchmal möchte man denselben Code halt als UNICODE- oder ANSI-Variante übersetzen können. Etwa, wenn man eine Library schreibt, die für beides verfügbar sein soll.

    Ich finde übrigens dieses Makro überhaupt nicht unelegant. Man muss halt nur immer daran denken, es auch zu verwenden.

    Stefan.



  • DStefan schrieb:

    pumuckl schrieb:

    DrGreenthumb schrieb:

    ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.

    UTF8-Codierter Quelltext ist IIRC nicht standardkompatibel. Der Standard erlaubt nur einen reltiv beschränkten Zeichensatz.

    Und was sollte das nützen? Ein String-Literal ist per Definition ein char-Array und kein wchar_t-Array.

    Ich meinte mit UTF8 auch, dass man dann natürlich kein wchar mehr benutzt.

    DStefan schrieb:

    Ich finde übrigens dieses Makro überhaupt nicht unelegant. Man muss halt nur immer daran denken, es auch zu verwenden.

    "man muss immer dran denken" schreit doch nach Bugs. Das passt ganz gut in meine Definition von unelegant.

    Ich denke mit wchar gehts auch nicht besser. Ich sehe aber auch nicht wozu man das benötigt.



  • pumuckl schrieb:

    DrGreenthumb schrieb:

    ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.

    UTF8-Codierter Quelltext ist IIRC nicht standardkompatibel. Der Standard erlaubt nur einen reltiv beschränkten Zeichensatz.

    Man muss sich eh an den Zeichensatz des Compilers halten. UTF8 war nur ein Beispiel.

    Darum zusammengefasst nochmal als Lösung für die Macros:
    Kein wchar_t nehmen und sich einfach im Klaren sein, mit welchem Format die Source-Datei gespeichert wurde. IMHO das praktischste.



  • DrGreenthumb schrieb:

    DStefan schrieb:

    pumuckl schrieb:

    DrGreenthumb schrieb:

    ich meinte nicht die strings aus Dateien "laden" sondern den Quelltext als UTF8 speichern.

    UTF8-Codierter Quelltext ist IIRC nicht standardkompatibel. Der Standard erlaubt nur einen reltiv beschränkten Zeichensatz.

    Und was sollte das nützen? Ein String-Literal ist per Definition ein char-Array und kein wchar_t-Array.

    Ich meinte mit UTF8 auch, dass man dann natürlich kein wchar mehr benutzt.

    DStefan schrieb:

    Ich finde übrigens dieses Makro überhaupt nicht unelegant. Man muss halt nur immer daran denken, es auch zu verwenden.

    "man muss immer dran denken" schreit doch nach Bugs. Das passt ganz gut in meine Definition von unelegant.

    Ich denke mit wchar gehts auch nicht besser. Ich sehe aber auch nicht wozu man das benötigt.

    Naja - idR wird's doch wohl ein "Bug" sein, der schon den Compiler nervt, sobald man mit "-DUNICODE" übersetzt. Also wird man wohl früh genug darauf aufmerksam.

    Meinst du, wozu man Unicode benötigt? Vielleicht für internationalisierbare Programme? Und wenn man bedenkt, dass z.B. Windows intern ausschließlich mit Unicode-Strings arbeitet, könnte man auf die Idee kommen, dass Unicode einfach der Stand der Technik ist.

    Stefan.



  • DStefan schrieb:

    Meinst du, wozu man Unicode benötigt?

    Nein, sondern wozu man wchar_t benötigt (ausser für manche APIs die's halt benutzen).

    wchar_t ist nur eine Format für Unicode. Man kann Unicode aber auch in normalen chars speichern. Davon spreche ich.



  • DrGreenthumb schrieb:

    DStefan schrieb:

    Meinst du, wozu man Unicode benötigt?

    Nein, sondern wozu man wchar_t benötigt (ausser für manche APIs die's halt benutzen).

    wchar_t ist nur eine Format für Unicode. Man kann Unicode aber auch in normalen chars speichern. Davon spreche ich.

    UTF-8 kannst auch in chars speichern ja. Bei UTF-16 belegt dann halt ein zeichen 2 Chars, da ist wchar_t angenehmer.
    rya.


Anmelden zum Antworten