std::string zu wchar_t[]
-
Welche Encodings willst du untereinander konvertieren? Willst du einfach die ASCII-Zeichen in
wchar_t's pressen? Dann reicht schonstd::wstring wstr( in.begin(), in.end() );Du kannst aber natürlich auch, falls irgendein Multibyte-Encoding in dem String gespeichert ist,
std::mbstowcsverwenden:std::string mbstr = u8"z\u00df\u6c34\U0001d10b"; std::wstring wstr(5, L'\0'); std::mbstowcs(&wstr[0], &mbstr[0], wstr.size());Und seit C++11 gibt es auch
wstring_convertund diecodecvt-Facets, mit denen man zwischen verschiedenen UTF-Formaten konvertieren kann.@Belli: Kannst du
std::wstringin deinem Code benutzen, anstatt das selber zu allozieren?
-
Hab ich in meiner Funktion gemacht. Der TE wollte aber ausdrücklich ein array haben.
Also einfach:
wstring s(res); delete[] res;anhängen, dann sollte es ganz sauber sein.
-
Der TE wollte aber ausdrücklich ein array haben.
Manchmal muss man die Menschen zum Glück zwingen

-
-
Belli schrieb:
Hab ich in meiner Funktion gemacht. Der TE wollte aber ausdrücklich ein array haben.
Also einfach:
wstring s(res); delete[] res;anhängen, dann sollte es ganz sauber sein.
Nein! Das ist nicht Exception-safe!
-
Nein! Das ist nicht Exception-safe!
Wenn
wstringschonbad_allocschmeißt, dann kann mir der Rest des Programmablaufs (der in der Regel gerade aus dem Grund dieses Exception-Wurfs deutlich verkürzt wird) ziemlich egal sein - daher ist es praktisch exception-safe.
-
Arcoth schrieb:
Nein! Das ist nicht Exception-safe!
Wenn
wstringschonbad_allocschmeißt, dann kann mir der Rest des Programmablaufs (der in der Regel gerade aus dem Grund dieses Exception-Wurfs deutlich verkürzt wird) ziemlich egal sein - daher ist es praktisch exception-safe.+1
Mein new-Handler ruft einfach exit auf. at_exit_handler flushen noch schön einige Logs und das wars auch.
-
Arcoth schrieb:
Nein! Das ist nicht Exception-safe!
Wenn
wstringschonbad_allocschmeißt, dann kann mir der Rest des Programmablaufs (der in der Regel gerade aus dem Grund dieses Exception-Wurfs deutlich verkürzt wird) ziemlich egal sein - daher ist es praktisch exception-safe.Ja, das
gutealte "warum einfach und korrekt, wenn es auch kompliziert und falsch geht".
-
Kellerautomat schrieb:
Nein! Das ist nicht Exception-safe!
Okay. Dann nehme man einen unique_ptr für res.
-
TyRoXx schrieb:
Ja, das
gutealte "warum einfach und korrekt, wenn es auch kompliziert und falsch geht".
Ich habe selbst vorgeschlagen, string zu nehmen statt irgendein Array anzulegen.
-
Aber die Windows-Funktion verlangt einen Pointer auf einen nicht-konstanten Bereich.
-
&str[0]