<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[std::string zu wchar_t[]]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie bekomme ich am besten ein <strong>wchar_t array</strong> aus einem <strong>std::string</strong>?</p>
<p>Ich habe mich schon oft gefragt wieso es für diverse windows.h Funktionen diverse verschiedene strings oder chars gibt. Ich könnte mir denken das die historisch gewachsen sind, aber hätte man sich da nicht auf was einheitliches einigen können?<br />
LPCWSTR LPSTR LPTSTR... und so weiter..</p>
<p>Gibt es darüber vlt irgendwo eine Übersicht? Vlt. ist es nicht mehr so verwirrend wenn man weiß wie die aufgebaut sind.<br />
Dann könnte man sich selbst denken wie man dahin kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325479/std-string-zu-wchar_t</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 11:47:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325479.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 May 2014 06:26:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 06:26:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie bekomme ich am besten ein <strong>wchar_t array</strong> aus einem <strong>std::string</strong>?</p>
<p>Ich habe mich schon oft gefragt wieso es für diverse windows.h Funktionen diverse verschiedene strings oder chars gibt. Ich könnte mir denken das die historisch gewachsen sind, aber hätte man sich da nicht auf was einheitliches einigen können?<br />
LPCWSTR LPSTR LPTSTR... und so weiter..</p>
<p>Gibt es darüber vlt irgendwo eine Übersicht? Vlt. ist es nicht mehr so verwirrend wenn man weiß wie die aufgebaut sind.<br />
Dann könnte man sich selbst denken wie man dahin kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397403</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Mon, 05 May 2014 06:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 06:56:47 GMT]]></title><description><![CDATA[<p>cl90 schrieb:</p>
<blockquote>
<p>Gibt es darüber vlt irgendwo eine Übersicht?</p>
</blockquote>
<p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx</a></p>
<p>Zum Konvertieren:</p>
<pre><code>string in(&quot;test&quot;);

   int len = MultiByteToWideChar(CP_ACP, 0, in.c_str(), -1, 0, 0);

   WCHAR *res = new WCHAR[len];

   MultiByteToWideChar(CP_ACP, 0, in.c_str(), -1, res, len);
</code></pre>
<p>Der Rückgabewert von MultiByteToWideChar kann/sollte natürlich der Doku entsprechend überprüft werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397404</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 05 May 2014 06:56:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 06:55:06 GMT]]></title><description><![CDATA[<p>danke, und bookmarked.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397405</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Mon, 05 May 2014 06:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 09:23:43 GMT]]></title><description><![CDATA[<p>Welche Encodings willst du untereinander konvertieren? Willst du einfach die ASCII-Zeichen in <code>wchar_t</code> 's pressen? Dann reicht schon</p>
<pre><code>std::wstring wstr( in.begin(), in.end() );
</code></pre>
<p>Du kannst aber natürlich auch, falls irgendein Multibyte-Encoding in dem String gespeichert ist,<a href="http://en.cppreference.com/w/cpp/string/multibyte/mbstowcs" rel="nofollow"> <code>std::mbstowcs</code> </a>verwenden:</p>
<pre><code>std::string mbstr = u8&quot;z\u00df\u6c34\U0001d10b&quot;;
    std::wstring wstr(5, L'\0');
    std::mbstowcs(&amp;wstr[0], &amp;mbstr[0], wstr.size());
</code></pre>
<p>Und seit C++11 gibt es auch<a href="http://en.cppreference.com/w/cpp/locale/wstring_convert" rel="nofollow"> <code>wstring_convert</code> </a>und die <code>codecvt</code> -Facets, mit denen man zwischen verschiedenen UTF-Formaten konvertieren kann.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22666">@Belli</a>: Kannst du <code>std::wstring</code> in deinem Code benutzen, anstatt das selber zu allozieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397420</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 05 May 2014 09:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 09:31:25 GMT]]></title><description><![CDATA[<p>Hab ich in meiner Funktion gemacht. Der TE wollte aber ausdrücklich ein array haben.</p>
<p>Also einfach:</p>
<pre><code>wstring s(res);
delete[] res;
</code></pre>
<p>anhängen, dann sollte es ganz sauber sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397424</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 05 May 2014 09:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Mon, 05 May 2014 09:32:23 GMT]]></title><description><![CDATA[<blockquote>
<p>Der TE wollte aber ausdrücklich ein array haben.</p>
</blockquote>
<p>Manchmal muss man die Menschen zum Glück zwingen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397425</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 05 May 2014 09:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 07:23:06 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/p1850229#1850229" rel="nofollow">http://www.c-plusplus.net/forum/p1850229#1850229</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397612</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 06 May 2014 07:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 09:57:17 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Hab ich in meiner Funktion gemacht. Der TE wollte aber ausdrücklich ein array haben.</p>
<p>Also einfach:</p>
<pre><code>wstring s(res);
delete[] res;
</code></pre>
<p>anhängen, dann sollte es ganz sauber sein.</p>
</blockquote>
<p>Nein! Das ist nicht Exception-safe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397630</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 06 May 2014 09:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 15:52:51 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein! Das ist nicht Exception-safe!</p>
</blockquote>
<p>Wenn <code>wstring</code> schon <code>bad_alloc</code> schmeiß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.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397713</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 06 May 2014 15:52:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 16:54:07 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Nein! Das ist nicht Exception-safe!</p>
</blockquote>
<p>Wenn <code>wstring</code> schon <code>bad_alloc</code> schmeiß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.</p>
</blockquote>
<p>+1<br />
Mein new-Handler ruft einfach exit auf. at_exit_handler flushen noch schön einige Logs und das wars auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397723</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 06 May 2014 16:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 17:25:02 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Nein! Das ist nicht Exception-safe!</p>
</blockquote>
<p>Wenn <code>wstring</code> schon <code>bad_alloc</code> schmeiß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.</p>
</blockquote>
<p>Ja, das <s>gute</s> alte &quot;warum einfach und korrekt, wenn es auch kompliziert und falsch geht&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397726</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 06 May 2014 17:25:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 17:22:04 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Nein! Das ist nicht Exception-safe!</p>
</blockquote>
<p>Okay. Dann nehme man einen unique_ptr für res.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397728</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 06 May 2014 17:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 17:37:56 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Ja, das <s>gute</s> alte &quot;warum einfach und korrekt, wenn es auch kompliziert und falsch geht&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>Ich habe selbst vorgeschlagen, string zu nehmen statt irgendein Array anzulegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397733</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 06 May 2014 17:37:56 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 17:46:52 GMT]]></title><description><![CDATA[<p>Aber die Windows-Funktion verlangt einen Pointer auf einen nicht-konstanten Bereich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397735</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 06 May 2014 17:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::string zu wchar_t[] on Tue, 06 May 2014 17:57:18 GMT]]></title><description><![CDATA[<p>&amp;str[0]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397738</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 06 May 2014 17:57:18 GMT</pubDate></item></channel></rss>