<?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[Rückgabetyp: Pointer auf wchar_t]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgendes Problem, bei dem mir weder Google noch die Forensuche weiterhelfen konnte:</p>
<p>Grundsätzlich möchte ich einen &quot;std::string&quot; in einen &quot;const wchar_t*&quot; übersetzen. Dafür habe ich mir eine kleine Helperkklasse gebaut, so dass ich folgenden Funktionsaufruf habe:</p>
<pre><code class="language-cpp">const wchar_t* test = myStringHelper.stdstring2wchart(std::string InputString)
</code></pre>
<p>Die Funktion &quot;stdstring2wchart&quot; muss mir einen wchar_t-Pointer zurückgeben können. Zum einen, weil ich mit dem Pointer weiterarbeiten will und zum anderen, weil ich nicht weiß, wie lang der std::string sein kann. (Naja, abschätzen und Speicher vorhalten könnte ich schon...)</p>
<p>Definiert ist die Funktion in der Klasse dann so:</p>
<pre><code class="language-cpp">const wchar_t* StringHelper::stdstring2wchart(std::string InputString)
{
size_t needed = ::mbstowcs(NULL, &amp;InputString[0], InputString.length());
std::wstring output;
output.resize(needed);
::mbstowcs(&amp;output[0], &amp;InputString[0], InputString.length());
const wchar_t *pout = output.c_str();
return pout;
}
</code></pre>
<p>So. Und nun das Problem: Der Pointer zeigt ab Verlassen der Funktion &quot;stdstring2wchart&quot; ins Nichts, und im oben stehenden Code erhalte ich nur Müll. Um die Übergabe eines Pointers komme ich nicht herum.</p>
<p>Was kann ich also machen, damit das funktioniert?</p>
<p>Liebe Grüße,<br />
Timm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242528/rückgabetyp-pointer-auf-wchar_t</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:58:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242528.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2009 19:02:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückgabetyp: Pointer auf wchar_t on Thu, 04 Jun 2009 19:02:39 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich habe folgendes Problem, bei dem mir weder Google noch die Forensuche weiterhelfen konnte:</p>
<p>Grundsätzlich möchte ich einen &quot;std::string&quot; in einen &quot;const wchar_t*&quot; übersetzen. Dafür habe ich mir eine kleine Helperkklasse gebaut, so dass ich folgenden Funktionsaufruf habe:</p>
<pre><code class="language-cpp">const wchar_t* test = myStringHelper.stdstring2wchart(std::string InputString)
</code></pre>
<p>Die Funktion &quot;stdstring2wchart&quot; muss mir einen wchar_t-Pointer zurückgeben können. Zum einen, weil ich mit dem Pointer weiterarbeiten will und zum anderen, weil ich nicht weiß, wie lang der std::string sein kann. (Naja, abschätzen und Speicher vorhalten könnte ich schon...)</p>
<p>Definiert ist die Funktion in der Klasse dann so:</p>
<pre><code class="language-cpp">const wchar_t* StringHelper::stdstring2wchart(std::string InputString)
{
size_t needed = ::mbstowcs(NULL, &amp;InputString[0], InputString.length());
std::wstring output;
output.resize(needed);
::mbstowcs(&amp;output[0], &amp;InputString[0], InputString.length());
const wchar_t *pout = output.c_str();
return pout;
}
</code></pre>
<p>So. Und nun das Problem: Der Pointer zeigt ab Verlassen der Funktion &quot;stdstring2wchart&quot; ins Nichts, und im oben stehenden Code erhalte ich nur Müll. Um die Übergabe eines Pointers komme ich nicht herum.</p>
<p>Was kann ich also machen, damit das funktioniert?</p>
<p>Liebe Grüße,<br />
Timm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721338</guid><dc:creator><![CDATA[2Atlantis]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabetyp: Pointer auf wchar_t on Thu, 04 Jun 2009 19:10:36 GMT]]></title><description><![CDATA[<p>Mach es über einen <code>std::wstring</code> und gibt diesen zurück:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607.html</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721342</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabetyp: Pointer auf wchar_t on Thu, 04 Jun 2009 19:24:01 GMT]]></title><description><![CDATA[<p>btw:<br />
<code>size_t needed = ::mbstowcs(NULL, &amp;InputString[0], InputString.length());</code><br />
Ich glaube nicht, dass das geht...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721353</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabetyp: Pointer auf wchar_t on Thu, 04 Jun 2009 19:56:04 GMT]]></title><description><![CDATA[<p>Hallo Dravere,</p>
<p>Vielen Dank für den Link auf den Forenbeitrag. Ich habe die Klasse auch sofort übernommen, das Objekt erzeugt und getestet.</p>
<p>Dennoch meckert die nachfolgende Funktion, die ein const wchart_t* erwartet rum:</p>
<pre><code>&quot;'std::wstring *__w64' kann nicht nach 'const wchar_t *' konvertiert werden&quot;
</code></pre>
<p>Bin ratlos, wie ich die Konvertierung nun vervollständige.</p>
<p>Hier mein Testcode:</p>
<pre><code class="language-cpp">std::wstring w = to_wstring(InputString);
const wchar_t* temp = &amp;w;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1721376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721376</guid><dc:creator><![CDATA[2Atlantis]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:56:04 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabetyp: Pointer auf wchar_t on Thu, 04 Jun 2009 20:05:08 GMT]]></title><description><![CDATA[<p>Okay. Diesmal habe ich mir selbst helfen können:</p>
<p>Der Code nach der std::string nach wstring-Konvertierung:</p>
<pre><code class="language-cpp">std::wstring w = to_wstring(InputString);
const wchar_t* temp = w.c_str();
</code></pre>
<p>Danke für eure Hilfe &amp; die sehr nette Klassendefinition, die ich mir jetzt erstmal genauer anschaue, um genau zu verstehen, was da passiert!</p>
<p>Merci!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721386</guid><dc:creator><![CDATA[2Atlantis]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:05:08 GMT</pubDate></item></channel></rss>