@wob sagte in C++ | If-Abfrage funktioniert nicht und ich weiß nicht warum:
@hustbaer sagte in C++ | If-Abfrage funktioniert nicht und ich weiß nicht warum:
Was soll Endianness da bitte für eine Rolle spielen? Ich denke es ist wohl ziemlich klar dass mit 0x0D0A der Unicode Codepoint U+0D0A gemeint war.
Genau nicht. Da stand ja gerade nicht "Codepoint", sondern "UTF-16 Zeichen in Hex-Darstellung". Ich fand das ganz und gar nicht eindeutig. Es fängt ja schon mit der Frage an, was genau ein "UTF-16 Zeichen" ist.
Ich sag ja nicht dass es gut formuliert ist. Aber ich denke es gibt nur eine sinnvolle Auslegung, und das ist "Unicode Zeichen das in UTF-16 als 0xXXXX dargestellt wird".
Hex-Darstellung könnte der als Zahl interpretierte Wert sein (das wäre dann Endianness-Unabhängig) oder eben die beiden Bytes direkt hintereinander.
Hm. Ich finde das nicht unklar. Wenn da 0x1A2B steht, dann ist für mich klar dass die Zahl 0x1A2B gemeint ist, und nicht zwei Bytes 0x1A, 0x2B. Wenn man nur 1A2B schreibt ist es mMn. nicht klar. Und 0x1A, 0x2B ist auch nicht super eindeutig - eben weil ohne Kontext nicht klar ist wie die Reihenfolge der beiden Bytes zu verstehen ist.
Um auch gerade den Unterschied zu "UTF-8 Zeichen" (auch hier, was ist das? Aber wenn es ein UTF-16-Zeichen gibt, dann auch ein UTF-8-Zeichen) klar zu machen, kann eigentlich nicht U+... gemeint sein, sondern die direkte Darstellung in der Kodierung.
Die direkte Darstellung der Kodierung ist bei UTF-16 für Zeichen in der BMP halt gleich. Wie gesagt, ich sag nicht dass es gut formuliert war. Speziell für Leute die noch nicht sehr sattelfest in der Materie sind also schlecht, weil sie sich dann u.U. diese ungenaue Ausdrucksweise aneignen. Ich sag nur dass es, wenn man sich auskennt, eigentlich ziemlich eindeutig war.