<?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[cast CString in LPSTR]]></title><description><![CDATA[<p>Wie kann ich szString[100] in LPSTR casten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181012/cast-cstring-in-lpstr</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:24:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181012.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 May 2007 08:01:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 08:01:24 GMT]]></title><description><![CDATA[<p>Wie kann ich szString[100] in LPSTR casten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281359</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 09 May 2007 08:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 08:34:58 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Wie kann ich szString[100] in LPSTR casten?</p>
</blockquote>
<p>Was ist es denn</p>
<pre><code class="language-cpp">/* Ein &quot;C&quot;-String */
char szString[100] = &quot;...&quot;;

// oder
// ein MFC &quot;CString&quot;
CString szString[100];
</code></pre>
<p>?</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281377</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 09 May 2007 08:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 08:38:51 GMT]]></title><description><![CDATA[<p>maRKus23 schrieb:</p>
<blockquote>
<p>Wie kann ich szString[100] in LPSTR casten?</p>
</blockquote>
<p>Was nun CString nach LPSTR? Dann musst Du GetBuffer verwenden. ein char szString[10] ist ein LPSTR!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281380</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 09 May 2007 08:38:51 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 08:42:25 GMT]]></title><description><![CDATA[<p>Ich möchte ein CString nach LPSTR casten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281383</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 09 May 2007 08:42:25 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 09:09:16 GMT]]></title><description><![CDATA[<p>Wie Martin schon sagte - verwende dafür &quot;GetBuffer()&quot; (das liefert zwar einen LP<strong>T</strong>STR, aber in ANSI-Umgebungen ist der identisch zu LPSTR).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281388</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 09 May 2007 09:09:16 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 09:27:33 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Wie Martin schon sagte - verwende dafür &quot;GetBuffer()&quot; (das liefert zwar einen LP<strong>T</strong>STR, aber in ANSI-Umgebungen ist der identisch zu LPSTR).</p>
</blockquote>
<p>Wie wärs denn mit</p>
<pre><code class="language-cpp">#include &lt;atlbase.h&gt;
//..,
void MyFunc() {
//...
    USES_CONVERSION;

    CString str(L&quot;Foo&quot;);
    LPSTR p = T2A(str.GetBuffer(str.GetLength()));
}
</code></pre>
<p>für beide Umgebungen?<br />
Sonst haätte der OP nämlich wirkich den Puffer von str am Wickel.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281396</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 09 May 2007 09:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 09:30:08 GMT]]></title><description><![CDATA[<p>Habe GetBuffer() verwendet, und funktioniert einwandfrei. Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281401</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 09 May 2007 09:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 11:54:12 GMT]]></title><description><![CDATA[<p>Ich würde &quot;CT2A&quot; verwenden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281525</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 09 May 2007 11:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 14:03:51 GMT]]></title><description><![CDATA[<p>Dieser Code wird dan aber in jedem Fall nicht funktionieren:</p>
<pre><code class="language-cpp">LPSTR p = CT2A(str.GetBuffer(str.GetLength()));
</code></pre>
<p>Denn der Zeiger wird sofort wieder ungültig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281664</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 09 May 2007 14:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 17:14:54 GMT]]></title><description><![CDATA[<p>Ich hätte auch eher an sowas gedacht <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>
<pre><code class="language-cpp">LPSTR str = strdup(CT2CA(cStrString));
// ...
free(str);
</code></pre>
<p>wobei, wenn ich es mir genau überlege ist es mit &quot;GetBuffer&quot; besser, *wenn* als ANSI übersetzt wird.<br />
Sonst wird einem vermutlich nicht viel anderen übrig bleiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281821</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 09 May 2007 17:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 17:24:53 GMT]]></title><description><![CDATA[<p>Interessant ist hier das T2A einen länger gültigen Zeiger liefert. Nur kann man das wieder nicht in einer Schleife benutzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281827</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 09 May 2007 17:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Wed, 09 May 2007 17:31:35 GMT]]></title><description><![CDATA[<p>GetBuffer() gibt <strong>nicht</strong> const zurück und T2A <strong>kopiert</strong> den String auf den Stack - das ist doch kein einfacher cast.</p>
<p>Dadurch wollte ich auch vermeiden dass der Puffer des CString manipuliert wird.</p>
<p>Was soll nun daran falsch sein?</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1281832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1281832</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 09 May 2007 17:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Thu, 10 May 2007 06:29:11 GMT]]></title><description><![CDATA[<p>Ich habe nicht geschrieben, das dies falsch ist.<br />
Ich habe eher über die Probleme mit CT2A gesprochen!</p>
<p>Wenn aber ein LPSTR benötigt wird, und das war die Frage des OP. dann ist T2A nicht der Weg, denn dies würde verhindern, das Ergebnis zu nutzen. Dies aber würde ich denken wenn ein LPSTR benötigt wird...</p>
<p>Zudem hat es nur den Effekt unter einer Unicode Version, dass eine Kopie auf dem Stack angelegt wird. In einer MBCS Version passiert nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282076</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 10 May 2007 06:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Thu, 10 May 2007 23:49:17 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ich habe nicht geschrieben, das dies falsch ist.<br />
Ich habe eher über die Probleme mit CT2A gesprochen!</p>
<p>Wenn aber ein LPSTR benötigt wird, und das war die Frage des OP. dann ist T2A nicht der Weg, denn dies würde verhindern, das Ergebnis zu nutzen.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Wieso kann man den nicht nutzen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>Zudem hat es nur den Effekt unter einer Unicode Version, dass eine Kopie auf dem Stack angelegt wird. In einer MBCS Version passiert nichts.</p>
</blockquote>
<p>Autsch, da hst Du natürlich recht! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Mir ist zwar klar, das MS das aus Gründen der Effizienz macht, aber unterschiedliches Allokationsverhalten zwischen UNICODE und MBCS ist ja doch ziemlich ekelhaft...</p>
<p>Also, was nun - _bstr_t Overkill? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282721</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Thu, 10 May 2007 23:49:17 GMT</pubDate></item><item><title><![CDATA[Reply to cast CString in LPSTR on Sun, 13 May 2007 14:54:07 GMT]]></title><description><![CDATA[<p>Ich würde niemals via T2A einen Buffer erzeugen aus einem Const, der für Rückgabewerte verwendet werden darf/kann. Man kann schon, aber der Effekt ist begrenzt auf die Implementierung und auf die Art und Weise ob diese Makros überhaupt etwas tun.</p>
<p>T2A etc benötigt man ja auch nur, wenn man umwandeln muss. Im Allgemeinen ist das aber oft gar nicht nötig, wenn konsequent UNICODE / MBCS entwickelt wird, bzw. TCHAR überall direkt verwendet wird.</p>
<p>BSTR sind mit Sicherheit keine Lösung, aber ein Ansatz, den man in COM gut und gerne nutzen kan. Habe ich ncihts mit COM zu tun, meide ich BSTR's.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1284075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1284075</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 13 May 2007 14:54:07 GMT</pubDate></item></channel></rss>