<?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[STL: Anzahl von einem Ausdruck in String suchen, wie?]]></title><description><![CDATA[<p>Hallole.<br />
Irgendwie bin ich heute etwas Gaga.</p>
<p>Ich habe einen std::string der ca. 10KB groß ist.<br />
In diesem Tummeln sich Zeichen an Zeichen und ich sollte nach der Anzahl eines bestimmten Ausdrucks suchen.</p>
<p>Also ich könnte das zb. mit find() machen aber für diesen unendlich langen string gibt es doch sicherlich eine fertige Funktion?<br />
Vielleicht auch mit boost?</p>
<p>Also als Beispiel:</p>
<pre><code>string empfang;

...
// empfang wir vollgeballert

//Muss die Anzahl von &quot;HALLO&quot; suchen.
size_t posa=0, posb=0;
unsigned int zaehl;
for(int i=0;i&lt;empfang.length();i++)
{
posb=empfang.find(&quot;HALLO&quot;,posa);

 if(posb!=std::string::npos)
 {
  zaehl++;
  posa=posb;
  posa++;
  i=posb;   

 }

}

//zaehler ist hier nun die Anzahl des vorkommens von HALLO
</code></pre>
<p>PS: Das ist kein lebendiges Beispiel, das habe ich nur so hier reingetipselt wie ich es als erstes machen würde. Also bei syntaktischen Fehlern nicht meckern:-)</p>
<p>So.<br />
Gibts hierfür was einfacheres?</p>
<p>Danke und Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197746/stl-anzahl-von-einem-ausdruck-in-string-suchen-wie</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 12:55:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197746.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Nov 2007 12:10:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 12:39:29 GMT]]></title><description><![CDATA[<p>Hallole.<br />
Irgendwie bin ich heute etwas Gaga.</p>
<p>Ich habe einen std::string der ca. 10KB groß ist.<br />
In diesem Tummeln sich Zeichen an Zeichen und ich sollte nach der Anzahl eines bestimmten Ausdrucks suchen.</p>
<p>Also ich könnte das zb. mit find() machen aber für diesen unendlich langen string gibt es doch sicherlich eine fertige Funktion?<br />
Vielleicht auch mit boost?</p>
<p>Also als Beispiel:</p>
<pre><code>string empfang;

...
// empfang wir vollgeballert

//Muss die Anzahl von &quot;HALLO&quot; suchen.
size_t posa=0, posb=0;
unsigned int zaehl;
for(int i=0;i&lt;empfang.length();i++)
{
posb=empfang.find(&quot;HALLO&quot;,posa);

 if(posb!=std::string::npos)
 {
  zaehl++;
  posa=posb;
  posa++;
  i=posb;   

 }

}

//zaehler ist hier nun die Anzahl des vorkommens von HALLO
</code></pre>
<p>PS: Das ist kein lebendiges Beispiel, das habe ich nur so hier reingetipselt wie ich es als erstes machen würde. Also bei syntaktischen Fehlern nicht meckern:-)</p>
<p>So.<br />
Gibts hierfür was einfacheres?</p>
<p>Danke und Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403013</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 12:24:05 GMT]]></title><description><![CDATA[<p>HI,<br />
wie wär's mit <a href="http://www.cppreference.com/cppalgorithm/count_if.html" rel="nofollow">std::count_if</a> ?<br />
Macht genau das und heißt auch noch so. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403019</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 12:27:33 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>HI,<br />
wie wär's mit <a href="http://www.cppreference.com/cppalgorithm/count_if.html" rel="nofollow">std::count_if</a> ?<br />
Macht genau das und heißt auch noch so. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Darüber hatte ich auch nachgedacht, ist aber hier nicht anwendbar (er zählt Teilfolgen und keine Elemente). Und etwas schnelleres als mit find() alle Vorkommen des Ausdrucks zu suchen fällt mir leider nicht ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403025</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:27:33 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 12:38:51 GMT]]></title><description><![CDATA[<p>Danke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Ich habs mal so einprogrammiert wie ichs oben geschrieben habe und es funktioniert eigentlich ganz gut...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403032</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 14 Nov 2007 12:38:51 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 13:42:15 GMT]]></title><description><![CDATA[<p>? Dein Code von oben ist vollkommen unperformant!</p>
<pre><code class="language-cpp">const std::string source(&quot;Das ist mein suuuuper langer String! Und meine tooolle Funktion!&quot;);

std::size_t count(0);
std::size_t pos(0);
while ((pos = source.find(&quot;mein&quot;, ++pos)) != std::string::npos) ++count;
</code></pre>
<p>... in count steht die Anzahl ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403054</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 13:36:59 GMT]]></title><description><![CDATA[<p>Ich hab mal in der algorithm-referenz rumgesucht und das kompakteste was ich zum Thema hab zusammenbasteln koennen ist folgendes:</p>
<pre><code class="language-cpp">//allgemeines Zaehlen von Sequenzen in Containern
template&lt;class Iter1, class Iter2&gt;
std::size_t count_subseq(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, std::size_t count = 0)
{
  Iter1 pos = std::search(first1, last1, first2, last2);
  if(pos==last1) return count; //subsequence not found
  return count_subseq(++pos, last1, first2, last2, ++count); //recursive call
}

//speziell: zaehlen eines subtrings in einem string
std::size_t count_subtring(const std::string&amp; str, const std::string&amp; substr) {
  return count_subseq(str.begin(), str.end(), substr.begin(), substr.end());
}
</code></pre>
<p>Natuerlich koennte man den rekursiven Zaehlalgorithmus auch iterativ machen:</p>
<pre><code class="language-cpp">template&lt;class Iter1, class Iter2&gt;
std::size_t count_subseq(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2)
{
  std::size_t count = 0;
  Iter1 tmp;
  Iter1 pos = first1;
  while (pos != last1) {
    tmp = std::search(pos, last1, first2, last2);
    if (tmp == last1) return count;
    ++count;
    pos = ++tmp;
  }
  return count; 
}
</code></pre>
<p>/edit: args, mal wieder zu lange rumgedroeselt <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403072</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to STL: Anzahl von einem Ausdruck in String suchen, wie? on Wed, 14 Nov 2007 13:54:49 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>? Dein Code von oben ist vollkommen unperformant!</p>
<pre><code class="language-cpp">const std::string source(&quot;Das ist mein suuuuper langer String! Und meine tooolle Funktion!&quot;);

std::size_t count(0);
std::size_t pos(0);
while ((pos = source.find(&quot;mein&quot;, ++pos)) != std::string::npos) ++count;
</code></pre>
<p>... in count steht die Anzahl ...</p>
</blockquote>
<p>Danke. Sehr lehrreiches Beispiel.<br />
Hast nur vergessen nach ++count noch pos zu incrementieren sonst rödelt er sich zu tode.<br />
Ich denke so werde ich es machen, vielen Dank.</p>
<p>Vielen Dank auf an alle anderen die sich Mühe gemacht haben und mit Beispiele gebracht haben.<br />
Jedes Beispiel an sich ist interessant und lehrreich.</p>
<p>Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403087</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:54:49 GMT</pubDate></item></channel></rss>