<?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[remove_copy_if() funktioniert auf string nicht ???]]></title><description><![CDATA[<p>Was ist an dem folgendem Code falsch:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;

using namespace std;

//Ünäres Prädikat
bool istZahl(char c)
{
	if(c&gt;=48 &amp;&amp; c&lt;=57) return true;

	return false;
}

int main()
{
    string mem = &quot;Wo 67 bin 54 ich:4847&quot;;
    string zahl;

    remove_copy_if(mem.begin(),mem.end(),zahl.begin(),istZahl);

    cout&lt;&lt;zahl;

    return 0;
}
</code></pre>
<p>Ich finde einfach den Fehler nicht. Benutze ich irgendetwas falsch ???<br />
Wenn ich in mein Prädikat noch ein cout setze wenn die Bedingung wahr ist und somit auch sehe das true zurückgegeben wird, bleibt zahl trotzdem leer.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123824/remove_copy_if-funktioniert-auf-string-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 18:23:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123824.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Oct 2005 15:05:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:06:57 GMT]]></title><description><![CDATA[<p>Was ist an dem folgendem Code falsch:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;

using namespace std;

//Ünäres Prädikat
bool istZahl(char c)
{
	if(c&gt;=48 &amp;&amp; c&lt;=57) return true;

	return false;
}

int main()
{
    string mem = &quot;Wo 67 bin 54 ich:4847&quot;;
    string zahl;

    remove_copy_if(mem.begin(),mem.end(),zahl.begin(),istZahl);

    cout&lt;&lt;zahl;

    return 0;
}
</code></pre>
<p>Ich finde einfach den Fehler nicht. Benutze ich irgendetwas falsch ???<br />
Wenn ich in mein Prädikat noch ein cout setze wenn die Bedingung wahr ist und somit auch sehe das true zurückgegeben wird, bleibt zahl trotzdem leer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896904</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:09:59 GMT]]></title><description><![CDATA[<p>Erstmal nur eine Vermutung, aber solltest Du nicht einen Insert-Iterator auf deinen String erstellen und an remove_copy_if übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896908</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:09:59 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:11:27 GMT]]></title><description><![CDATA[<p>zahl.resize(mem.length());</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896912</guid><dc:creator><![CDATA[falsch!]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:11:27 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:26:42 GMT]]></title><description><![CDATA[<p>Beide vorschläge funktionieren:</p>
<pre><code class="language-cpp">string::iterator itr = zahl.begin();

    insert_iterator&lt;string&gt; its(zahl,itr);

    remove_copy_if(mem.begin(),mem.end(),its,istZahl);
</code></pre>
<pre><code class="language-cpp">zahl.resize(mem.length());
    remove_copy_if(mem.begin(),mem.end(),zahl.begin(),istZahl);
</code></pre>
<p>Obwohl ich mir beim 2. nicht sicher wahr. string sollte doch selber sich vergrößern ???</p>
<p>Ach und jetzt werden in &quot;zahl&quot; die Bustaben gespeichert, obwohl das Verhalten anders sein sollte ???<br />
Was ist jetzt wieder falsch...</p>
<p>Wenn ich dann natürlich true und false vertausche klappt es <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="😃"
    /><br />
Aber soll solls ja nicht sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896924</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:31:20 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>Obwohl ich mir beim 2. nicht sicher wahr. string sollte doch selber sich vergrößern ???</p>
</blockquote>
<p>Ja, wenn du mittels append(), operator+= etc. etwas anhängst, passt er die Größe an, bei deiner Iterator-Konstruktion schreibst du auf uninitialisierten Speicher (wenn die Bibliothek das nicht entschärft).</p>
<blockquote>
<p>Ach und jetzt werden in &quot;zahl&quot; die Bustaben gespeichert, obwohl das Verhalten anders sein sollte ???<br />
Was ist jetzt wieder falsch...</p>
</blockquote>
<p>remove_copy_if macht genau das, was der Name andeutet, es schmeißt alle Elemente weg (&quot;remove&quot;), die die angegebene Bedingung erfüllen (&quot;if&quot;) und überträgt die übrigen ans Ziel (&quot;copy&quot;). Das heißt, mit deinem Prädikat löscht er dir alle Ziffern aus dem übergebenen String.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896930</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:31:20 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:39:05 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>überträgt die übrigen ans Ziel (&quot;copy&quot;)</p>
</blockquote>
<p>Achso, ich dachte die die er löscht kopiert er ...<br />
<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>
]]></description><link>https://www.c-plusplus.net/forum/post/896940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896940</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:42:34 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Freak_Coder schrieb:</p>
<blockquote>
<p>Obwohl ich mir beim 2. nicht sicher wahr. string sollte doch selber sich vergrößern ???</p>
</blockquote>
<p>Ja, wenn du mittels append(), operator+= etc. etwas anhängst, passt er die Größe an, bei deiner Iterator-Konstruktion schreibst du auf uninitialisierten Speicher (wenn die Bibliothek das nicht entschärft).</p>
</blockquote>
<p>Ich hätte gedacht die STL ist schlau genug um den String auch noch zu vergrößern...<br />
remove_copy_if() hätte ja auch append() und operator+= aufrufen können um in den string reinzuschreiben. Wie kriegt er sonst die Daten da rein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896946</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:44:27 GMT]]></title><description><![CDATA[<p>Nein, das ist abgeleitet von &quot;remove_if()&quot; - lösche alle Zeichen, die die Bedingung erfüllen.</p>
<p>Eine Aussage, die mir Google geliefert hat (<a href="http://www.infosys.tuwien.ac.at/Research/Component/tutorial/prw432.htm" rel="nofollow">http://www.infosys.tuwien.ac.at/Research/Component/tutorial/prw432.htm</a>):</p>
<blockquote>
<p>remove_copy_if writes all elements referred to by the iterator i in the range [first, last) to the output iterator result, for which the following condition does not hold:</p>
<p>pred(*i) == true. The algorithm returns the end of the resulting range.</p>
</blockquote>
<p>(btw, in der zweiten Variante (resize) solltest du den String noch auf die richtige Länge stutzen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896949</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:45:34 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(btw, in der zweiten Variante (resize) solltest du den String noch auf die richtige Länge stutzen)</p>
</blockquote>
<p>Stimmt. OK <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>
]]></description><link>https://www.c-plusplus.net/forum/post/896950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896950</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:50:01 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>Ich hätte gedacht die STL ist schlau genug um den String auch noch zu vergrößern...<br />
remove_copy_if() hätte ja auch append() und operator+= aufrufen können um in den string reinzuschreiben. Wie kriegt er sonst die Daten da rein.</p>
</blockquote>
<p>Die STL ist generisch aufgebaut - dadurch kannst du die Algorithmen identisch mit jedem Container verwenden, der geeignete Iteratoren bereitstellt. Der Nachteil davon ist, daß die Algorthmen nicht auf container-spezifische Funktionen zurückgreifen können (stell dir mal vor, was passiert, wenn du append() auf ein old-style Array anwenden willst ;)).<br />
Und genau dafür ist der insert_iterator (und Kollegen) gedacht - er erwartet im unterliegenden Container eine insert()-Methode, an die er die ankommenden Daten weitergibt (std::string hat glücklicherweise eine, die auch in der Lage ist, die Stringlänge aktuell zu halten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896953</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:55:01 GMT]]></title><description><![CDATA[<p><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="👍"
    /> Thx for Info<br />
(Ich sollte mal langsam Anfangen mich mit der Stl näher zu beschäftigen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/896956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896956</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy_if() funktioniert auf string nicht ??? on Thu, 20 Oct 2005 15:57:55 GMT]]></title><description><![CDATA[<p>Freak_Coder schrieb:</p>
<blockquote>
<p>(Ich sollte mal langsam Anfangen mich mit der Stl näher zu beschäftigen <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>Ist sicher eine gute Idee - in der STL sind mehr nützliche Sachen drin als man vermutet. Und du kannst sie bei Bedarf frei erweitern und mit eigenen Dateitypen und Algorithmen kombinieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896958</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 15:57:55 GMT</pubDate></item></channel></rss>