Was ist eine "breite Zeichenfolge" in C?
Stieß ich auf diese in dem Buch:
wscanf(L"%lf", &variable);
wobei der erste parameter ist der Typ der wchar_t *
.
Diese s anders aus scanf("%lf", &variable);
wo der erste parameter ist der Typ char *
.
Also, was ist der Unterschied als. Ich habe noch nie gehört, "wide-character-string" vor. Ich habe gehört, sowas nennt man Raw-String-Literale, die drucken die Zeichenfolge, wie es ist (keine Notwendigkeit für Dinge wie z.B. escape-Sequenzen), aber das war nicht in C.
Kommentar zu dem Problem
Hier starten joelonsoftware.com/articles/Unicode.html
Der erste parameter ist eigentlich der Typ
wchar_t []
, geringfügig von wchar_t *
. InformationsquelleAutor der Frage quantum231 | 2012-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den genaue Natur der wide-Zeichen, ist (absichtlich) Links-Implementierung definiert.
Wenn Sie zuerst erfunden, das Konzept der
wchar_t
-, ISO-10646 und Unicode wurden noch im Wettbewerb mit jedem anderen (während Sie jetzt meist kooperieren). Anstatt zu versuchen, Dekret, die einen internationalen Charakter wäre, der eine oder andere (oder vielleicht etwas ganz anderes) Sie lediglich eine Art (und einige Funktionen), könnte die Umsetzung definieren, um die Unterstützung internationaler Zeichensätze wie Sie wollten.Verschiedene Implementierungen haben ausgeübt, dass das potential für Variationen. Zum Beispiel, wenn Sie Microsoft-compiler auf Windows
wchar_t
wird eine 16-bit-Typ holding UTF-16 Unicode (ursprünglich gehalten UCS-2-Unicode, aber das ist jetzt offiziell veraltet).Unter Linux
wchar_t
Häufig ein 32-bit-Typ, holding UCS-4/UTF-32-kodierte Unicode. Ports von gcc auf zumindest einige andere Betriebssysteme tun das gleiche, aber ich habe nie versucht, um zu bestätigen, dass es immer der Fall ist.Ist, gibt es jedoch keine Garantie. Zumindest in der Theorie eine Umsetzung auf Linux nutzen könnte, 16 bits, oder man konnte es unter Windows verwenden 32 bits, oder man konnte sich entscheiden, verwenden Sie die 64 bit (obwohl ich ein bisschen überrascht zu sehen, dass in der Realität).
In jedem Fall die Allgemeine Idee von, wie die Dinge sind soll zu arbeiten, ist, dass eine einzige
wchar_t
ausreichend ist, um einen code darstellen-Punkt. Für I/O, die Daten sollen umgewandelt werden, die von der externen Darstellung (was auch immer es ist) inwchar_t
s, die (angeblich) machen Sie relativ leicht zu manipulieren. Dann bei der Ausgabe werden Sie wieder zu bekommen, verwandelt sich in der Kodierung Ihrer Wahl (das kann ganz unterschiedlich sein von der Codierung, die Sie Lesen).InformationsquelleAutor der Antwort Jerry Coffin
"Wide character string" bezieht sich auf die Kodierung der Zeichen in der Zeichenfolge.
Vom Wikipedia:
UTF-16 ist eine der am häufigsten verwendeten wide-character-encodings.
Weiter
wchar_t
ist definiert durch Microsoft alsunsigned short(16-bit)
Daten-Objekt. Dies könnte und wird wahrscheinlich eine andere definition, die in anderen Betriebssystemen oder Sprachen.Entnommen aus dem Wikipedia-Artikel aus dem Kommentar unten:
InformationsquelleAutor der Antwort Chris Dargis