<?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[String nach String durchsuchen]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen ziemlich langen string, den ich nach einer bestimmten Zeichenfolge durchsuchen möchte, was ich mit der für mich idealsten Lösung find() mache. Nur soll die Gesamte Zeichenkette, auch wenn die gesuchte Folge gefunden wurde, weiter durchsucht werden, bis an ihr Ende, weil die gesuchte Zeichenfolge mehrmals im string auftauchen kann. Alle Positionen will ich in einem Array abspeichern.</p>
<p>Mein aktueller Code:</p>
<pre><code class="language-cpp">int Found[255];
int a = 0;
string Zeile, Inhalt;
unsigned int Pos = 0;

while( Pos &lt; Zeile.length() )
{
   Pos = Zeile.find( Suche, Pos );
   if( string::npos != Pos )
   {
       Found[a] = Pos;
       a++;
   }
}
</code></pre>
<p>Ich bekomme aber, wenn ich es ausführe immer eine Fehlermeldung und das Programm muss sich beenden. Weiß jemand eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247322/string-nach-string-durchsuchen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 14:57:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247322.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Aug 2009 12:52:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 12:52:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen ziemlich langen string, den ich nach einer bestimmten Zeichenfolge durchsuchen möchte, was ich mit der für mich idealsten Lösung find() mache. Nur soll die Gesamte Zeichenkette, auch wenn die gesuchte Folge gefunden wurde, weiter durchsucht werden, bis an ihr Ende, weil die gesuchte Zeichenfolge mehrmals im string auftauchen kann. Alle Positionen will ich in einem Array abspeichern.</p>
<p>Mein aktueller Code:</p>
<pre><code class="language-cpp">int Found[255];
int a = 0;
string Zeile, Inhalt;
unsigned int Pos = 0;

while( Pos &lt; Zeile.length() )
{
   Pos = Zeile.find( Suche, Pos );
   if( string::npos != Pos )
   {
       Found[a] = Pos;
       a++;
   }
}
</code></pre>
<p>Ich bekomme aber, wenn ich es ausführe immer eine Fehlermeldung und das Programm muss sich beenden. Weiß jemand eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757835</guid><dc:creator><![CDATA[Fragenmann]]></dc:creator><pubDate>Sun, 09 Aug 2009 12:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 13:04:37 GMT]]></title><description><![CDATA[<p>Fragenmann schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Ich habe einen ziemlich langen string, den ich nach einer bestimmten Zeichenfolge durchsuchen möchte, was ich mit der für mich idealsten Lösung find() mache. Nur soll die Gesamte Zeichenkette, auch wenn die gesuchte Folge gefunden wurde, weiter durchsucht werden, bis an ihr Ende, weil die gesuchte Zeichenfolge mehrmals im string auftauchen kann. Alle Positionen will ich in einem Array abspeichern.</p>
<p>Mein aktueller Code:</p>
<pre><code class="language-cpp">int Found[255];
int a = 0;
string Zeile, Inhalt;
unsigned int Pos = 0;

while( Pos &lt; Zeile.length() )
{
   Pos = Zeile.find( Suche, Pos );
   if( string::npos != Pos )
   {
       Found[a] = Pos;
       a++;
   }
}
</code></pre>
<p>Ich bekomme aber, wenn ich es ausführe immer eine Fehlermeldung und das Programm muss sich beenden. Weiß jemand eine Lösung?</p>
</blockquote>
<p>Vermutlich findest du mehr als 255 Mal etwas. Dein Array kann aber nur 255 Elemente aufnehmen. Dein Programm stürzt dann ab. Du kannst das Problem mit std::vector, std::list oder std::stack, usw. lösen. Was davon für dich am besten geeignet ist, hängt davon ab, was du genau vor hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757844</guid><dc:creator><![CDATA[BBBB]]></dc:creator><pubDate>Sun, 09 Aug 2009 13:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 13:06:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

int main()
{
	std::string zeile(&quot;ein teststring ein string ein test&quot;);
	std::string suche(&quot;ein&quot;);
	std::vector&lt;std::string::size_type&gt; positionen; // lieber ein std::vector als ein Array
	std::string::size_type cur_pos = zeile.find(suche); // erstes Auftreten finden
	while(cur_pos != std::string::npos) { // falls etwas gefunden wurde -&gt; weitersuchen
		positionen.push_back(cur_pos);
		cur_pos = zeile.find(suche, ++cur_pos); // ++cur_pos um ab der nächsten Position zu suchen
	}

	std::cout &lt;&lt; &quot;Suchstring \&quot;&quot; &lt;&lt; suche &lt;&lt; &quot;\&quot; wurde in\n\&quot;&quot;
			  &lt;&lt; zeile &lt;&lt; &quot;\&quot;\nan den folgenden Positionen gefunden:&quot; &lt;&lt; std::endl;
	for(std::vector&lt;std::string::size_type&gt;::const_iterator beg(positionen.begin()), end(positionen.end()); beg != end; ++beg)
		std::cout &lt;&lt; &quot;Position -&gt; &quot; &lt;&lt; *beg &lt;&lt; &quot;\n&quot;;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1757845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757845</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Sun, 09 Aug 2009 13:06:09 GMT</pubDate></item><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 13:09:47 GMT]]></title><description><![CDATA[<p>Mizar schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

int main()
{
	std::string zeile(&quot;ein teststring ein string ein test&quot;);
	std::string suche(&quot;ein&quot;);
	std::vector&lt;std::string::size_type&gt; positionen; // lieber ein std::vector als ein Array
	std::string::size_type cur_pos = zeile.find(suche); // erstes Auftreten finden
	while(cur_pos != std::string::npos) { // falls etwas gefunden wurde -&gt; weitersuchen
		positionen.push_back(cur_pos);
		cur_pos = zeile.find(suche, ++cur_pos); // ++cur_pos um ab der nächsten Position zu suchen
	}

	std::cout &lt;&lt; &quot;Suchstring \&quot;&quot; &lt;&lt; suche &lt;&lt; &quot;\&quot; wurde in\n\&quot;&quot;
			  &lt;&lt; zeile &lt;&lt; &quot;\&quot;\nan den folgenden Positionen gefunden:&quot; &lt;&lt; std::endl;
	for(std::vector&lt;std::string::size_type&gt;::const_iterator beg(positionen.begin()), end(positionen.end()); beg != end; ++beg)
		std::cout &lt;&lt; &quot;Position -&gt; &quot; &lt;&lt; *beg &lt;&lt; &quot;\n&quot;;

	return 0;
}
</code></pre>
</blockquote>
<p>Ich denke, es reicht wenn man den Iterator so initialisiert:</p>
<pre><code class="language-cpp">std::vector&lt;std::string::size_type&gt;::const_iterator beg = positionen.begin()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1757846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757846</guid><dc:creator><![CDATA[BBBB]]></dc:creator><pubDate>Sun, 09 Aug 2009 13:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 13:17:41 GMT]]></title><description><![CDATA[<p>Danke an alle, es geht jetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757850</guid><dc:creator><![CDATA[Fragenmann]]></dc:creator><pubDate>Sun, 09 Aug 2009 13:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to String nach String durchsuchen on Sun, 09 Aug 2009 13:18:18 GMT]]></title><description><![CDATA[<p>Sowas hier:</p>
<pre><code class="language-cpp">for(std::vector&lt;std::string::size_type&gt;::const_iterator beg(positionen.begin()), end(positionen.end()); beg != end; ++beg)
</code></pre>
<p>ist bei mir schon zur Gewohnheit geworden. Dein Vorschlag:</p>
<p>BBBB schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::vector&lt;std::string::size_type&gt;::const_iterator beg = positionen.begin()
</code></pre>
</blockquote>
<p>geht natürlich auch :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757851</guid><dc:creator><![CDATA[Mizar]]></dc:creator><pubDate>Sun, 09 Aug 2009 13:18:18 GMT</pubDate></item></channel></rss>