Konvertieren von char* zu wchar* in C
Ich würde gerne konvertieren char*
string zu einem wchar*
string in C.
Ich fand viele Antworten, aber die meisten von Ihnen sind für C++. Könnten Sie mir helfen?
Dank.
- Was ist der ursprüngliche Zeichensatz-Kodierung in Ihrem
char*
? UTF8? ANSI? Was ist diesizeof(wchar)
auf Ihrem system und welche Codierung hat es verlassen? UCS-2 (16bit)? UCS-4 (32-bit)? - Boah... ich dachte
sizeof(wchar)
war immer 2, nicht? - Es ist nicht unbedingt 2. Es wird durch die Implementierung festgelegt. Wenn die Programmierung auf Windows, es hat eine Größe von zwei bytes und enthält die UTF-16 -, mit Doppel-wchar_t ist für ersatzzeichenpaare.
- o__O ich wusste nicht, dass es die Umsetzung definiert... interessant, danke für die info.
- Es ist auf unix-system, so dass ich denke, es spielt keine Rolle, nicht ?
- Ich habe vergessen welches system (Linux vielleicht?), verwendet ein 4-byte -
wchar_t
kodiert mit UTF-32. - Ja 4 byte printf("Größe von wchar_t : %d",sizeof(wchar_t)); -> "die Größe von wchar_t : 4" So, wie kann ich konvertieren string in unidocde ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
swprintf
mit der%hs
Flagge.Beispiel:
setlocale()
gefolgt von, die Funktionen mbstowcs()
.was du suchst ist
funktioniert genau wie die Funktion zum kopieren von char* zu char*
aber in diesem Fall, Sie speichern, in ein wchar_t*
Wenn Sie geschehen, um die Windows-API zur Verfügung, die die Konvertierung-Funktion MultiByteToWideChar bietet einige konfigurierbare string-Konvertierung von Kodierungen UTF-16. Das könnte sein, mehr geeignet, wenn Sie don ' T care zu viel über Portabilität und nicht wollen, um herauszufinden, was genau die Auswirkungen der verschiedenen locale-Einstellungen, um die Zeichenfolge converison.
wenn Sie momentan ANSI-chars. legen Sie einfach eine 0 ('\0') vor jeder char auf und warf Sie nach wchar_t*.