p=CharNext(p); ist genau wie p++ ?
-
hallo zusammen,
TCHAR *p; // char *p; ... p=(TCHAR *)CharNext(p);ist gleich p++ ?
hab einfach etwas probiert, und es scheint kein Problem. Frage:
wenn es keinen Unterschied gibt, warum wurde CharNext() definiert?
-
-
Was in dem MSDN Artikel nicht steht: "p++" kann mit Multi-Byte-Encodings nicht umgehen (z.B. BIG5 oder UTF7/8). CharNext kann vermutlich zumindest mit Multi-Byte-Codepages wie BIG5 umgehen und evtl. auch mit UTF7/8 (müsste ich nachsehen).
EDIT: CharNext verwendet die System-Codepage, d.h. es wird mit z.B. BIG5 Strings auch nur richtig umgehen wenn das System auf BIG5 eingestellt ist.
-
hustbaer schrieb:
Was in dem MSDN Artikel nicht steht: "p++" kann mit Multi-Byte-Encodings nicht umgehen (z.B. BIG5 oder UTF7/8). CharNext kann vermutlich zumindest mit Multi-Byte-Codepages wie BIG5 umgehen und evtl. auch mit UTF7/8 (müsste ich nachsehen).
danke schön !!! ich dachte auch so.
Aber wenn ich 100% wissen, dass es um Ansi oder Unicode geht, dann kann ich gerne mit p++ benutzen, weil es vielleicht einbisschen effizient.
-
Wenn du genau weisst dass ein Zeichen immer nur aus einem "Element" (char, wchar_t, was auch immer) besteht kannst du natürlich p++ verwenden.
Allerdings solltest du wissen dass es auch in Unicode zusammengesetzte Zeichen gibt (z.B. kann man Ä mit einem Codepoint darstellen oder eben auch aus "A" und "zwei Punkte drüber" zusammensetzen). Wie weit das deine Applikation betrifft kann ich natürlich nicht sagen. Es gibt viele Fälle in denen es egal ist.
-
hustbaer schrieb:
Wenn du genau weisst dass ein Zeichen immer nur aus einem "Element" (char, wchar_t, was auch immer) besteht kannst du natürlich p++ verwenden.
Allerdings solltest du wissen dass es auch in Unicode zusammengesetzte Zeichen gibt (z.B. kann man Ä mit einem Codepoint darstellen oder eben auch aus "A" und "zwei Punkte drüber" zusammensetzen). Wie weit das deine Applikation betrifft kann ich natürlich nicht sagen. Es gibt viele Fälle in denen es egal ist.
alles klar. Herzlichen Dank!!