<?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[CString Verständnisfrage]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich suche im Netz nach einer Erklärung was es mit der Headerdatei string.h, der Klasse CString und einem char Array auf sich hat.</p>
<p>Mir ist klar bzw. verstehe ich derzeit so, alle Zeichenketten in C++ sind mit \0 terminiert um überschreiben zu verhindern. (nicht ganz klar formuliert ich weiss)</p>
<p>Die CString Klasse gehört denke ich MFC an und liefert nach meinem Verständnis einen Baukasten um mit Strings leichter zu arbeiten.</p>
<p>String.h nun eine Art Erleichterung, wobei mir von verschiedenen Stelle abgeraten wurde diese zu verwenden....</p>
<p>Warum ich versuche das ganze zu hinterfragen ist, weil ich versuche einen CString in eine andere Methode zu übertragen.</p>
<p>Da ich noch viel mit lernen beschäftigt bin, sehe ich im Moment nur den Weg mittels eines Zeigers mir die Adresse des Objektes zu merken damit ich mit dem Objekt in anderen Methoden arbeiten kann und da scheitert es....</p>
<p>Es wäre schön wenn mich Jemand mit einem kurzen Beispiel und einer kleinen Erläuterung weiterhelfen könnte. Auch verwirren Sacherverhalte wie WPARAM,LPARAM mich bei meinem bestreben.....</p>
<p>Mein Versuch sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">CString *strCmdline = new CString;

	//GET CmDLine

	*strCmdline=theApp.m_lpCmdLine;
	if(*strCmdline.Left(1) == &quot;\&quot;&quot;)
	{
		*strCmdline = *strCmdline.Mid(1,strCmdline.GetLength()-2);
	}
	*strCmdline+=&quot;\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/173946/cstring-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 15:17:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173946.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Feb 2007 13:46:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CString Verständnisfrage on Wed, 21 Feb 2007 13:46:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich suche im Netz nach einer Erklärung was es mit der Headerdatei string.h, der Klasse CString und einem char Array auf sich hat.</p>
<p>Mir ist klar bzw. verstehe ich derzeit so, alle Zeichenketten in C++ sind mit \0 terminiert um überschreiben zu verhindern. (nicht ganz klar formuliert ich weiss)</p>
<p>Die CString Klasse gehört denke ich MFC an und liefert nach meinem Verständnis einen Baukasten um mit Strings leichter zu arbeiten.</p>
<p>String.h nun eine Art Erleichterung, wobei mir von verschiedenen Stelle abgeraten wurde diese zu verwenden....</p>
<p>Warum ich versuche das ganze zu hinterfragen ist, weil ich versuche einen CString in eine andere Methode zu übertragen.</p>
<p>Da ich noch viel mit lernen beschäftigt bin, sehe ich im Moment nur den Weg mittels eines Zeigers mir die Adresse des Objektes zu merken damit ich mit dem Objekt in anderen Methoden arbeiten kann und da scheitert es....</p>
<p>Es wäre schön wenn mich Jemand mit einem kurzen Beispiel und einer kleinen Erläuterung weiterhelfen könnte. Auch verwirren Sacherverhalte wie WPARAM,LPARAM mich bei meinem bestreben.....</p>
<p>Mein Versuch sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">CString *strCmdline = new CString;

	//GET CmDLine

	*strCmdline=theApp.m_lpCmdLine;
	if(*strCmdline.Left(1) == &quot;\&quot;&quot;)
	{
		*strCmdline = *strCmdline.Mid(1,strCmdline.GetLength()-2);
	}
	*strCmdline+=&quot;\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1232613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232613</guid><dc:creator><![CDATA[Namenloser]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to CString Verständnisfrage on Wed, 21 Feb 2007 13:54:32 GMT]]></title><description><![CDATA[<p>char* ist (technisch) ein Zeiger auf ein Zeichen - praktisch deutet man ihn als einen Zeiger auf ein Nullterminiertes Zeichenarray (das \0 dient nur als Marke &quot;hier ist der String zu Ende&quot;). &lt;string.h&gt; alias &lt;cstring&gt; liefert einige Funktionen, mit denen du diese Zeichen-Arrays verarbeiten kannst.</p>
<p>Die Klasse CString ist eine Microsoft-Erfindung zur String-Verarbeitung - sie kapselt intern einen char* und nimmt dir die gesamte Speicherverwaltung ab. Das bedeutet besonders, daß du den CString nicht unbedingt auf dem Heap ablegen mußt:</p>
<pre><code class="language-cpp">CString strCmdline;

//GET CmDLine
strCmdline=theApp.m_lpCmdLine;
if(strCmdline.Left(1) == &quot;\&quot;&quot;)
{
  strCmdline = strCmdline.Mid(1,strCmdline.GetLength()-2);
}
strCmdline+=&quot;\n&quot;;
</code></pre>
<p>(die Methoden wie Left() oder Mid() kapseln entsprechende Aufrufe in die string.h Funktionen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232623</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Feb 2007 13:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to CString Verständnisfrage on Wed, 21 Feb 2007 14:12:11 GMT]]></title><description><![CDATA[<p>Aber wie übergebe ich das Cstring Objekt nun einer anderen Methode...Ich habe auch versucht die CString Variable im Header public zu setzen aber jedesmal meckert der Compiler das er dieses nicht kennt?</p>
<p>Oder anders formuliert in einer Methode kann ich bequem mit dem CString arbeiten aber in anderen Methoden die damit weiterarbeiten sollen eben nicht und ich verstehe nicht wieso.......</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232635</guid><dc:creator><![CDATA[Namenloser]]></dc:creator><pubDate>Wed, 21 Feb 2007 14:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to CString Verständnisfrage on Wed, 21 Feb 2007 14:18:39 GMT]]></title><description><![CDATA[<p>Wie versuchst du es denn zu übergeben?</p>
<p>Sowas sollte gehen:</p>
<pre><code class="language-cpp">void funk(CString bla);
</code></pre>
<p>wie mit jedem anderen Datentyp halt auch. <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/1232639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232639</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 21 Feb 2007 14:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to CString Verständnisfrage on Wed, 21 Feb 2007 14:55:21 GMT]]></title><description><![CDATA[<p>estartu schrieb:</p>
<blockquote>
<p>Wie versuchst du es denn zu übergeben?<br />
wie mit jedem anderen Datentyp halt auch. <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>
</blockquote>
<p>Die Problemmatik ergibt sich aus der Tatsache das ich mit Threads experimentiere</p>
<pre><code class="language-cpp">DWORD WINAPI ThreadFunc(LPVOID Data) 
{ 
	return((DWORD)Data); 
}
</code></pre>
<pre><code class="language-cpp">HANDLE hThread; 
DWORD dwThreadID;
int index=NULL;
hThread = ::CreateThread( NULL, 0, ThreadFunc, (LPVOID)index, 0,&amp;dwThreadID );
</code></pre>
<p>Da meine gesammelten Informationen bzgl. Threads recht schwammig sind, tue ich mir auch sehr schwer die Logik zu begreifen, dieser Parameter Data ist unablässig, schreibe ich im Aufruf bei CreateThread meinen CString dazu bzw. erweitere die Parameterliste der Threadfunc meckert der Compiler das er den CString nicht konvertieren kann.</p>
<p>Ich suche in der MSDN stosse auf AfxBeginThread(); finde ich im Netz das und jenes aber eine letzendliche Klarheit darüber habe ich nicht. Vielleicht kommt eines Tages der Tag an dem ich Glück habe einen Tutor zu finden den ich mit Fragen löchern kann....nunja</p>
<p>Ich weiss nicht was schlimmer ist...<br />
Zuviele Informationen zu erhalten wovon man nicht von Sinnig und Unsinnig unterscheiden kann.<br />
Oder zu wenig Informationen zu haben und das Rad bzw. Verständnis neu erfinden zu müssen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232662</guid><dc:creator><![CDATA[Namenloser]]></dc:creator><pubDate>Wed, 21 Feb 2007 14:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to CString Verständnisfrage on Thu, 22 Feb 2007 20:48:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">...

  HANDLE hThread; 
  DWORD dwThreadID;
  DWORD dwStatus;

  // Ein neuen CString ...
  CString *psMyStringToPass = new CString(_T(&quot;Der soll im Thread auftauchen ...&quot;));

  // ... der mit eben Data an einen Thread übergeben wird
  hThread = ::CreateThread( NULL, 0, ThreadFunc, (LPVOID)psMyStringToPass, 0,&amp;dwThreadID ); 

  // Achtung bei dieser Quick&amp;Dirty, hier musst Du warten, bis der Thread beendet ist, z.B.
  // Aber Obacht, das ist Quick&amp;Dirty! An Synchrionisation, Events, Critical
  // Sections, Mutexes, ... kommst Du nicht vorbei. Da musst Du lesen ...
  VERIFY(::GetExitCodeThread(m_pExtensionThread-&gt;m_hThread, &amp;dwStatus));
  while( dwStatus == STILL_ACTIVE &amp;&amp; hThread != NULL ) 
  {
    ::GetExitCodeThread(hThread hThread, &amp;dwStatus );
  } 

  // Speicher freigeben nicht vergessen ...
  delete psMyStringToPass;
  ...
</code></pre>
<p>So, und in deiner Threadfunktion:</p>
<pre><code class="language-cpp">DWORD WINAPI ThreadFunc(LPVOID Data) 
{ 
  CString *pPassedString = (CString *)Data;

  if( pPassedString != NULL )
  {
    TRACE(&quot;Das kam: %s&quot;, *pPassedString );
  }

  // den Fehlercode kannst Du natürlicc frei setzten ...  
  return( 0L ); 
}
</code></pre>
<p>Gruss, Gio</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233657</guid><dc:creator><![CDATA[Gio]]></dc:creator><pubDate>Thu, 22 Feb 2007 20:48:03 GMT</pubDate></item></channel></rss>