<?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[if anweisung eingabe mit vector vergleichen]]></title><description><![CDATA[<p>Hallo.<br />
Lerne gerade c++... Im Moment ist es die Aufgabe Wörter, die von einem nicht gemocht werden durch &quot;xxx&quot; zu ersetzen.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;vector&gt;
#include&lt;algorithm&gt;
#include&lt;cmath&gt;
using namespace std;

void wait ()
{
    // Löscht etwaige Fehlerzustände die das Einlesen verhindern könnten
    cin.clear();
    // Ignoriert soviele Zeichen im Puffer wie im Puffer vorhanden sind
    // (= ignoriert alle Zeichen die derzeit im Puffer sind)
    cin.ignore(cin.rdbuf()-&gt;in_avail());
    // Füge alle eingelesenen Zeichen in den Puffer bis ein Enter gedrückt wird
    // cin.get() liefert dann das erste Zeichen aus dem Puffer zurück, welches wir aber ignorieren (interessiert uns ja nicht)
    cin.get();
} 

int main(){

 /* vector&lt;string&gt;dislikewords(2); //Vector für Wörter die unbeliebt sind
  dislikewords[0]=&quot;arsch&quot;;
  dislikewords[1]=&quot;man&quot;;
  */
  string ersetzen=&quot;xxx&quot;;

  cout &lt;&lt; &quot;Geben Sie ihren Text ein\n&quot;;
  vector&lt;string&gt; words;
  string woerter; 

  string dislikewords =&quot;arschbla&quot;;
  while (cin&gt;&gt;woerter){
    if(woerter==dislikewords)
      words.push_back(ersetzen);
    else 
      words.push_back(woerter);
  }
  for( int i=0;i&lt;words.size();++i)
    if (i==0 || words[i-1]!=words[i])
     cout &lt;&lt; words[i] &lt;&lt; &quot;\n&quot;;

    wait(); // Warten auf Enter
    return 0; 

}
</code></pre>
<p>Das Programm funktioniert auch mit einem Wort(string dislikewords =&quot;arschbla&quot;;)<br />
Jedoch soll es mit mehreren funktionieren.<br />
Deshalb habe ich am anfang einen Vector erstellt(ist jetzt ausgekommentioert). Vergleiche ich nun die Eingabe mit den Vector if(woerter==dislikewords) kommt die Fehlermeldung:<br />
Fehler 1 error C2784: &quot;bool std::operator ==(const std::vector&lt;_Ty,_Alloc&gt; &amp;,const std::vector&lt;_Ty,_Alloc&gt; &amp;)&quot;: template-Argument für &quot;const std::vector&lt;_Ty,_Alloc&gt; &amp;&quot; konnte nicht von &quot;std::string&quot; hergeleitet werden. c:\c+++\main.cpp 676</p>
<p>Benutze Vb 2008 express<br />
Buch: Einführung in die Programmiersprache C++ von Bjarne Stroustrup(keine Lösungen)</p>
<p>Ich hoffe ihr könnt mir sagen was ich falsch gemacht habe.</p>
<p>Danke schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286785/if-anweisung-eingabe-mit-vector-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 17:29:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286785.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 May 2011 15:09:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Mon, 16 May 2011 15:09:22 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Lerne gerade c++... Im Moment ist es die Aufgabe Wörter, die von einem nicht gemocht werden durch &quot;xxx&quot; zu ersetzen.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;vector&gt;
#include&lt;algorithm&gt;
#include&lt;cmath&gt;
using namespace std;

void wait ()
{
    // Löscht etwaige Fehlerzustände die das Einlesen verhindern könnten
    cin.clear();
    // Ignoriert soviele Zeichen im Puffer wie im Puffer vorhanden sind
    // (= ignoriert alle Zeichen die derzeit im Puffer sind)
    cin.ignore(cin.rdbuf()-&gt;in_avail());
    // Füge alle eingelesenen Zeichen in den Puffer bis ein Enter gedrückt wird
    // cin.get() liefert dann das erste Zeichen aus dem Puffer zurück, welches wir aber ignorieren (interessiert uns ja nicht)
    cin.get();
} 

int main(){

 /* vector&lt;string&gt;dislikewords(2); //Vector für Wörter die unbeliebt sind
  dislikewords[0]=&quot;arsch&quot;;
  dislikewords[1]=&quot;man&quot;;
  */
  string ersetzen=&quot;xxx&quot;;

  cout &lt;&lt; &quot;Geben Sie ihren Text ein\n&quot;;
  vector&lt;string&gt; words;
  string woerter; 

  string dislikewords =&quot;arschbla&quot;;
  while (cin&gt;&gt;woerter){
    if(woerter==dislikewords)
      words.push_back(ersetzen);
    else 
      words.push_back(woerter);
  }
  for( int i=0;i&lt;words.size();++i)
    if (i==0 || words[i-1]!=words[i])
     cout &lt;&lt; words[i] &lt;&lt; &quot;\n&quot;;

    wait(); // Warten auf Enter
    return 0; 

}
</code></pre>
<p>Das Programm funktioniert auch mit einem Wort(string dislikewords =&quot;arschbla&quot;;)<br />
Jedoch soll es mit mehreren funktionieren.<br />
Deshalb habe ich am anfang einen Vector erstellt(ist jetzt ausgekommentioert). Vergleiche ich nun die Eingabe mit den Vector if(woerter==dislikewords) kommt die Fehlermeldung:<br />
Fehler 1 error C2784: &quot;bool std::operator ==(const std::vector&lt;_Ty,_Alloc&gt; &amp;,const std::vector&lt;_Ty,_Alloc&gt; &amp;)&quot;: template-Argument für &quot;const std::vector&lt;_Ty,_Alloc&gt; &amp;&quot; konnte nicht von &quot;std::string&quot; hergeleitet werden. c:\c+++\main.cpp 676</p>
<p>Benutze Vb 2008 express<br />
Buch: Einführung in die Programmiersprache C++ von Bjarne Stroustrup(keine Lösungen)</p>
<p>Ich hoffe ihr könnt mir sagen was ich falsch gemacht habe.</p>
<p>Danke schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064120</guid><dc:creator><![CDATA[Piane]]></dc:creator><pubDate>Mon, 16 May 2011 15:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Mon, 16 May 2011 15:17:51 GMT]]></title><description><![CDATA[<p>Wie soll denn der Vergleich von einem Wort mit mehreren Wörtern aussehen? Das gibt es nicht. Du musst das Wort mit jedem einzelnen Wort aus deinem Container vergleichen.</p>
<p>(P.S.: Wenn du feststellen willst, ob ein Objekt in einer Liste gewisser anderer Objekte enthalten ist, dann ist ein set eine deutlich bessere Datenstruktur als ein vector, da es eine sehr schnelle Funktion hat die dies feststellt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064125</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 May 2011 15:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Tue, 17 May 2011 06:00:55 GMT]]></title><description><![CDATA[<p>Wenn die &quot;dislikewords&quot; Wörter nur einmal initialisiert werden (oder nur selten verändert), kann man sie auch gut in einem sortierten vector speichern und mit <code>std::binary_search</code> finden.</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;
    vector&lt;string&gt; dislikewords(2); //Vector für Wörter die unbeliebt sind
    dislikewords[0]=&quot;arsch&quot;;
    dislikewords[1]=&quot;man&quot;;
    sort(dislikewords.begin(), dislikewords.end());

    string ersetzen=&quot;xxx&quot;;
    cout &lt;&lt; &quot;Geben Sie ihren Text ein\n&quot;;
    vector&lt;string&gt; words;
    string woerter;

    while (cin&gt;&gt;woerter)
        if (binary_search(dislikewords.begin(), dislikewords.end(), woerter))
            words.push_back(ersetzen);
        else
            words.push_back(woerter);

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2064390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064390</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 17 May 2011 06:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Wed, 18 May 2011 14:22:35 GMT]]></title><description><![CDATA[<p>Vielen Dank euch beiden.</p>
<p>Das set werde ich mir mal anschauen, wenn es im Buch nicht vorkommt :-).<br />
Ich denke man soll mehrere if anweisungen nehmen.<br />
Also:</p>
<pre><code class="language-cpp">if(woerter==dislikewords[1])
      words.push_back(ersetzen);
    else if((woerter==dislikewords[2])
      words.push_back(ersetzen);
</code></pre>
<p>Die Lösung von brotbernd klappt auch. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065279</guid><dc:creator><![CDATA[Piane]]></dc:creator><pubDate>Wed, 18 May 2011 14:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Wed, 18 May 2011 14:45:27 GMT]]></title><description><![CDATA[<p>Piane schrieb:</p>
<blockquote>
<p>Vielen Dank euch beiden.</p>
<p>Das set werde ich mir mal anschauen, wenn es im Buch nicht vorkommt :-).</p>
</blockquote>
<p>Grober Fehler im Buch. Sehr grob. Buch taugt nichts.</p>
<blockquote>
<p>Ich denke man soll mehrere if anweisungen nehmen.<br />
Also:</p>
<pre><code class="language-cpp">if(woerter==dislikewords[1])
      words.push_back(ersetzen);
    else if((woerter==dislikewords[2])
      words.push_back(ersetzen);
</code></pre>
<p>Die Lösung von brotbernd klappt auch. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Das ist nicht dein Ernst, oder? Wie áare es mit einer Schleife?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065289</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 18 May 2011 14:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Wed, 18 May 2011 22:11:25 GMT]]></title><description><![CDATA[<p>Hab mal nachgeschaut, die Assoziative container kommen in Kapitel 21 und ich bin in Kapitel 4. Also noch ziemlich am Anfang. Die Kapitel bauen aufeinander auf, deswegen will ich auch keine großen Sprünge machen...</p>
<p>Wie könnte man dort die Schleife den einbauen ? Stehen nämlich gerade aufem Schlauch wie du das meinst...</p>
<p>Danke das du mir hilfst und Verbesserungen vorschlägst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065572</guid><dc:creator><![CDATA[Piane]]></dc:creator><pubDate>Wed, 18 May 2011 22:11:25 GMT</pubDate></item><item><title><![CDATA[Reply to if anweisung eingabe mit vector vergleichen on Wed, 18 May 2011 22:17:03 GMT]]></title><description><![CDATA[<p>Kamen denn schon Schleifen vor? Wenn ja, benötigst du eine for()-Schleife, die über die komplette verbotenen-Wörter-Liste läuft - und in der Schleife den Vergleich mit dem i-ten Element.<br />
(weniger Aufwand hast du, wenn du die STL-Algorithmen wie find() oder binary_search() verwendest, keine Ahnung, ob die schon an der Reihe waren)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065576</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 May 2011 22:17:03 GMT</pubDate></item></channel></rss>