<?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[Problem mit CString::find()]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich habe folgende code.</p>
<pre><code class="language-cpp">void CTestDlg::SplitInBlock(CString StringToBeSplit,std::vector&lt;CString&gt;&amp; SplitedBlock)
{
	CString strBuffer=StringToBeSplit;
	CString StrTem=NULL;
	int iStart=0;
	int iEnd=0;
	while(StringToBeSplit.Find(BLOCK_START)&gt;0)
	{
            iStart=StringToBeSplit.Find(BLOCK_START);
            iEnd=StringToBeSplit.Find(BLOCK_END);
	   StrTem=StringToBeSplit.Mid(iStart+1,iEnd-iStart-1);
	   SplitedBlock.push_back(StrTem); 
	   strBuffer=strBuffer.Right(strBuffer.GetLength()-iEnd-1);
	}
}
</code></pre>
<p>while Schleife funktionert nur ein Mal Obwohl BLOCK_START=&quot;&lt;&quot; Mehr Fach im String vorhanden sind. Ich finde den Fehler einfach nicht. Kann jemand verraten?<br />
Danke im Voraus.</p>
<p>Gruß<br />
S.Mathi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169847/problem-mit-cstring-find</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 09:34:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169847.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Jan 2007 15:39:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit CString::find() on Wed, 10 Jan 2007 07:18:28 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich habe folgende code.</p>
<pre><code class="language-cpp">void CTestDlg::SplitInBlock(CString StringToBeSplit,std::vector&lt;CString&gt;&amp; SplitedBlock)
{
	CString strBuffer=StringToBeSplit;
	CString StrTem=NULL;
	int iStart=0;
	int iEnd=0;
	while(StringToBeSplit.Find(BLOCK_START)&gt;0)
	{
            iStart=StringToBeSplit.Find(BLOCK_START);
            iEnd=StringToBeSplit.Find(BLOCK_END);
	   StrTem=StringToBeSplit.Mid(iStart+1,iEnd-iStart-1);
	   SplitedBlock.push_back(StrTem); 
	   strBuffer=strBuffer.Right(strBuffer.GetLength()-iEnd-1);
	}
}
</code></pre>
<p>while Schleife funktionert nur ein Mal Obwohl BLOCK_START=&quot;&lt;&quot; Mehr Fach im String vorhanden sind. Ich finde den Fehler einfach nicht. Kann jemand verraten?<br />
Danke im Voraus.</p>
<p>Gruß<br />
S.Mathi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1206389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206389</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Wed, 10 Jan 2007 07:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit CString::find() on Wed, 10 Jan 2007 07:10:24 GMT]]></title><description><![CDATA[<p>Weil Du zwar strBuffer veränderst aber im Kopf der while Schleife StringToBeSplit verwendest.</p>
<p>Warum verwendest Du überhaupt eine Methode, den ursprünglichen String verändert?<br />
CString Find hat doch eine Start Position! Und Warum suchst DU mehrfachnach BLOCK_START?</p>
<p>Ungeprüft, aber das sollte genügen! Allerdings gibt es hier keine Behandlung des Fehlerfalles &quot;BLOCK_END fehlt!&quot;.</p>
<pre><code>{ 
	int iStart=0; 
	int iEnd=0; 
	while((iStart=StringToBeSplit.Find(BLOCK_START,iEnd))&gt;0) 
	{ 
		iEnd = StringToBeSplit.Find(BLOCK_END,iStart); 
		SplitedBlock.push_back(StringToBeSplit.Mid(iStart+1,iEnd-iStart-1)); 
	} 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1206764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1206764</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 10 Jan 2007 07:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit CString::find() on Thu, 11 Jan 2007 06:21:17 GMT]]></title><description><![CDATA[<p>OK. Ich bin mit deinem Vorschlag völlig einverstanden. Ich will jetzt gerne wiesen, ob man so was mit dem CString überhaupt machen kann. Oder Ob ich was grundsätzlich was falsch mache.</p>
<p>Vielen Danke für eure Hilfe!. Ich habe das Code folgende Massen geändert. Trotzdem läuft Schleife nur ein Mal.</p>
<p>Gruß<br />
S.Mathi</p>
<pre><code class="language-cpp">{
    //define BLOCK_START _T(&quot;&lt;&quot;)
    //define BLOCK_START _T(&quot;&gt;&quot;)

    CString strBuffer=&quot;!&lt;Hallo1&gt;&lt;Hallo2&gt;&lt;Hallo3&gt;$&quot;;
    CString StrTem=NULL;
    int iStart=0;
    int iEnd=0;
    while(strBuffer.Find(BLOCK_START)&gt;0)
    {
            iStart=StringToBeSplit.Find(BLOCK_START);
            iEnd=StringToBeSplit.Find(BLOCK_END);
       StrTem=StringToBeSplit.Mid(iStart+1,iEnd-iStart-1);
       SplitedBlock.push_back(StrTem); 
       strBuffer=strBuffer.Right(strBuffer.GetLength()-iEnd-1);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1207467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207467</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Thu, 11 Jan 2007 06:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit CString::find() on Thu, 11 Jan 2007 00:14:44 GMT]]></title><description><![CDATA[<p>Nim das so:</p>
<pre><code class="language-cpp">{ 
#define BLOCK_START _T(&quot;&lt;&quot;) 
#define BLOCK_END _T(&quot;&gt;&quot;) 

	CString strBuffer=&quot;!&lt;Hallo1&gt;&lt;Hallo2&gt;&lt;Hallo3&gt;$&quot;; //Suchstring
	int iStart=0; //Startvariable
	int iEnd=-1; //endvariable -1 da sie in der nächsten find um 1 erhöht wird
	while((iStart=strBuffer.Find(BLOCK_START,iEnd+1))!=-1) //start suchen ergebnis in iStart speichern und testen auf -1=abbruch nichts gefunden
	{ 
		iEnd=strBuffer.Find(BLOCK_END,iStart); //ende suchen
		SplitedBlock.push_back(strBuffer.Mid(iStart+1,iEnd-iStart-1)); //ausschneiden und rückgegebenen string in vector sichern
	} 
}
</code></pre>
<p>das läuft. Wenn Du in der while ein Test auf Find &gt; 0 machst, so wird die while nur einmal durchlaufen, da bein 2. finden die rückgabe von find auf jeden fall &gt; 0 ist, sofern noch was zu finden ist.</p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207577</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Thu, 11 Jan 2007 00:14:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit CString::find() on Thu, 11 Jan 2007 09:13:29 GMT]]></title><description><![CDATA[<p>Jetzt habe endlich meinen Denkfehler entdeckt.(Mit eurer Hilfe)</p>
<p>Danke<br />
S.mathi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207688</guid><dc:creator><![CDATA[smathi]]></dc:creator><pubDate>Thu, 11 Jan 2007 09:13:29 GMT</pubDate></item></channel></rss>