<?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[Suche in einem String begrenzen?]]></title><description><![CDATA[<p>Guten tag,<br />
ich habe folgendes Problem,<br />
der Benutzer mach eine Eingabe und zwar einen Satz:<br />
&quot;ich mag Nudeln aber kein Salz.&quot;<br />
dieser eingegebene string speichert sich in einem string names Answer. In Answer wird durch die Memberfunktion find nach Signalwörtern gesucht auf die das Programm je nach dem was es für ein Wort gefunden hat anders reagiert, wenn jezt aber bezogen auf den Beispiel Satz oben, eine Reaktion für &quot;Nudlen&quot; und eine Reaktion für &quot;Salz&quot; definiert ist, dan zeigt mein Programm beide Reaktionen an. Das ist etwas was ich vermeiden möchte, also habe ich mir gedacht das es doch gehen müsste das mein Programm nur auf das erste Wort was es kennt reagiert und den rest ignoriert. Wie kriege ich das hin? Oder hat vileicht jemand eine andere Idee wie ich das Problem löse?</p>
<p>Vielen Dank schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268053/suche-in-einem-string-begrenzen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 03:07:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268053.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Jun 2010 13:30:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 13:30:23 GMT]]></title><description><![CDATA[<p>Guten tag,<br />
ich habe folgendes Problem,<br />
der Benutzer mach eine Eingabe und zwar einen Satz:<br />
&quot;ich mag Nudeln aber kein Salz.&quot;<br />
dieser eingegebene string speichert sich in einem string names Answer. In Answer wird durch die Memberfunktion find nach Signalwörtern gesucht auf die das Programm je nach dem was es für ein Wort gefunden hat anders reagiert, wenn jezt aber bezogen auf den Beispiel Satz oben, eine Reaktion für &quot;Nudlen&quot; und eine Reaktion für &quot;Salz&quot; definiert ist, dan zeigt mein Programm beide Reaktionen an. Das ist etwas was ich vermeiden möchte, also habe ich mir gedacht das es doch gehen müsste das mein Programm nur auf das erste Wort was es kennt reagiert und den rest ignoriert. Wie kriege ich das hin? Oder hat vileicht jemand eine andere Idee wie ich das Problem löse?</p>
<p>Vielen Dank schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906346</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Thu, 03 Jun 2010 13:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 13:37:25 GMT]]></title><description><![CDATA[<p>Das kommt auf dein Programm an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906350</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 03 Jun 2010 13:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 13:52:06 GMT]]></title><description><![CDATA[<p>Ich mag Nudeln aber kein Salz.<br />
Ich mag keine Kartoffeln aber Zucker.<br />
Ich mag Bier wie Wein.<br />
Ich mag Obst wie die Pest.<br />
Viel Erfolg!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906360</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 03 Jun 2010 13:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 14:25:26 GMT]]></title><description><![CDATA[<p>Ich tippe auf mehrere if-Abfragen in deinem Programm. Wenn du stattdessen if() esle if() ... benutzt springt er nur in eine Bedingung. <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="🙂"
    /><br />
Dies ist aber nur geraten. Um dein Problem zu lösen müsstest du wahrscheibnlich deinen Code hier posten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906374</guid><dc:creator><![CDATA[freak4fun]]></dc:creator><pubDate>Thu, 03 Jun 2010 14:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 14:44:26 GMT]]></title><description><![CDATA[<p>okay, ich denke jezt wird mein Problem klarer,<br />
ich hätte es von anfang an so machen sollen <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 />
hier ist der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	int found=0;
	string Anwser=&quot;&quot;;
	bool end=false;

	while(end!=true)
	{
		getline(cin, Anwser);

		found=Anwser.find(&quot;English&quot;);
		if(found!=string::npos)
		{
			cout &lt;&lt; &quot;English!&quot; &lt;&lt; endl;
		}

		found=Anwser.find(&quot;German&quot;);
		if(found!=string::npos)
		{
			cout &lt;&lt; &quot;German!&quot; &lt;&lt; endl;
		}

		found=Anwser.find(&quot;end&quot;);
		if(found!=string::npos)
		{
			end=true;
		}
	}

	return 0;
}
</code></pre>
<p>wen der Benutzer &quot;German English&quot; eingibt dan wird durch find beides gefunden und auf beides reagiert aber das möchte ich vermeiden, das Programm soll auf das erste was es findet reagieren, in anderen Worten es soll nur einmal pro Eingabe reagieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906379</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Thu, 03 Jun 2010 14:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 15:09:18 GMT]]></title><description><![CDATA[<p>Ich musste deine Frage 3 mal lesen, bevor ich es gerafft hab <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>Lass den User deinen Satz eingeben.<br />
Danach könnt ich mir 2 Möglichkeiten vorstellen.</p>
<p>1. Diesen Satz in seine einzelnen Wörter auftrennen. Diese in einen vector<br />
speichern. Über diesen Vector iterieren und mit den jeweils definierten Reaktionen abgleichen. (z.B in einer Funktion). Nach dem Abhandeln einer Reaktion<br />
die Funktion verlassen.</p>
<p>2. Den Satz als String hernehmen und darin nach deinen Wörtern suchen.<br />
Bei Treffer die Reaktion abhandeln und auch hier dann Funktion verlassen.</p>
<p>Bei letzterer Möglichkeit seh ich folgendes Problem.</p>
<p>&quot;Ich mag Bier wie Wein&quot;</p>
<blockquote>
<p>&gt; Treffer für Wein</p>
</blockquote>
<p>&quot;Ich mag Bier wie Weinbeeren&quot;</p>
<blockquote>
<p>&gt; auch Treffer für Wein ???</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1906388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906388</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Thu, 03 Jun 2010 15:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 15:55:53 GMT]]></title><description><![CDATA[<p>Erstmal vielen dank Basicman01,<br />
du hast recht, Weinbeeren sollte nach dem Konzept des Programms kein Treffer sein, das wäre nähmlich das nägste Problem.<br />
für das Akktuelle Problem glaube ich eine Lösung gefunden zu haben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	int found=0;
	string Anwser=&quot;&quot;;
	bool end=false;
	bool first=true;

	for(;end!=true;first=true)
	{
		getline(cin, Anwser);

		found=Anwser.find(&quot;English&quot;);
		if(found!=string::npos &amp;&amp; first==true)
		{
			cout &lt;&lt; &quot;English!&quot; &lt;&lt; endl;
			first=false;
		}

		found=Anwser.find(&quot;German&quot;);
		if(found!=string::npos &amp;&amp; first==true)
		{
			cout &lt;&lt; &quot;German!&quot; &lt;&lt; endl;
			first=false;
		}

		found=Anwser.find(&quot;end&quot;);
		if(found!=string::npos)
		{
			end=true;
		}
	}
	return 0;
}
</code></pre>
<p>sobald das Programm ein Wort gefunden hat, setzt es First auf false. somit weis der rest des Programms das in diesem Schleifen Durchlauf schon ein Wort gefunden worden ist und gehen somit nicht mehr auf weitere Wörter ein. Im Kopf der Schleife wird versichert das nach jedem Durchlauf First wieder auf true gesetzt wird damit das ganze von vorne los gehen kann.<br />
Dies ist vileicht nicht die eleganteste Art und hat auch eine macke, mann müsste die find-blöcke nach piorität ordnen, den in diesem falle egal in welcher reinfolge ich die beiden Wörter zusammen eingebe (&quot;English German&quot; oder German English&quot;) die Ausgabe ist immer &quot;English!&quot;. In anderen Worten, Dieser Mechanismus geht nicht nach dem ersten eingetipptem Wort sondern nach dem ersten definiertem Wort in der Schleife.</p>
<p>Hat jemand noch eine Alternative um dies zu beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906420</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Thu, 03 Jun 2010 15:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 16:13:27 GMT]]></title><description><![CDATA[<p>Vielleicht sowas? Quick and Dirty:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;vector&gt;

typedef std::vector&lt;std::string&gt; StrVec;

StrVec splitStr(const std::string&amp; str);

int main()
{
	bool running = true;

	while (running)
	{
		std::string answer;

		std::getline(std::cin, answer);

		StrVec vec = splitStr(answer);

		bool finish = false;

		for (StrVec::iterator it = vec.begin(); it != vec.end(); ++it)
		{
			if (!finish)
			{
				if (it-&gt;find(&quot;English&quot;) != std::string::npos)
				{
					std::cout &lt;&lt; &quot;English&quot; &lt;&lt; std::endl;
					finish = true;
				}
				else if (it-&gt;find(&quot;German&quot;) != std::string::npos)
				{
					std::cout &lt;&lt; &quot;German&quot; &lt;&lt; std::endl;
					finish = true;
				}
			}
			else if (it-&gt;find(&quot;end&quot;) != std::string::npos)
			{
				running = false;
			}
		}
	}

	return 0;
}

StrVec splitStr(const std::string&amp; str)
{
	StrVec vec;

	std::stringstream strm(str);

	std::string buf;

	while (strm &gt;&gt; buf)
	{
		vec.push_back(buf);
	}

	return vec;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1906427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906427</guid><dc:creator><![CDATA[opooioi]]></dc:creator><pubDate>Thu, 03 Jun 2010 16:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 16:16:24 GMT]]></title><description><![CDATA[<p>Wenn du es so machst, dann haben bestimmte Wörter eine höhere Priorität als andere. Bei Deinem Programm hat &quot;English&quot; die höchste Priorität. Ein Eingabe &quot;English German&quot; oder &quot;German English&quot; kommt beides mal &quot;English&quot; heraus. Wenn es das ist, was Du willst, bist Du quasi fertig. Wenn Du allerdings das erste Wort im String nehmen willst, was erkannt wird, dann müsstest Du dir auch die Position merken. Oder eben einfach den Satz in seine Wörter zerlegen und der Reihe nach durchgehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906428</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 03 Jun 2010 16:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 18:36:30 GMT]]></title><description><![CDATA[<p>okay ich habe das Problem gelöst und zwar ähnlich wie opooioi.<br />
jezt habe ich aber ein zweites und letztes Problem und war genau das worauf mich BasicMan01 schon hingewiesen hat. Wenn eine reaktion für &quot;Wein&quot; definiert ist, dan reagiert das Programm wen die Eingabe &quot;Weinbeeren&quot; ist auch, und das soll es nicht weil es ja ein anderes Wort als &quot;wein&quot; ist. Wie kriege ich das noch hin?<br />
schon mal vielen dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906485</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Thu, 03 Jun 2010 18:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Thu, 03 Jun 2010 19:05:07 GMT]]></title><description><![CDATA[<p>TheJoker schrieb:</p>
<blockquote>
<p>okay ich habe das Problem gelöst und zwar ähnlich wie opooioi.</p>
</blockquote>
<p>Falls dies der Fall sein sollte, hoffe ich, dass deine Lösung auch die Geschichte<br />
mit dem vector beinhaltet.<br />
Dann brauchst du nur folgendes zu ändern:</p>
<pre><code class="language-cpp">for (StrVec::iterator it = vec.begin(); it != vec.end(); ++it)
{
    // Stringvergleich
    if(*it == &quot;English&quot;)
    {
        std::cout &lt;&lt; &quot;English&quot; &lt;&lt; std::endl;
        finish = true;

[...]
}
</code></pre>
<p>ich hoffe, ich hab nix uebersehen, aber wenn im Vector die Wörter einzeln aufgelistet sind, wird es so gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906497</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Thu, 03 Jun 2010 19:05:07 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Fri, 04 Jun 2010 16:54:09 GMT]]></title><description><![CDATA[<p>ja, ich habe das genauso mit dem vector gemacht wie opooioi.<br />
ich habe das jezt so probiert wie BasicMan01 das gemacht hat aber<br />
irgetwie kriege ich es nicht zum laufen.<br />
auf &quot;EnglishGerman&quot; wird immernoch reagiert, obwohl es nicht definiert ist. Definiert ist nur &quot;German&quot; und &quot;English&quot; aber nicht &quot;EnglishGerman&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906886</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Fri, 04 Jun 2010 16:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to Suche in einem String begrenzen? on Fri, 04 Jun 2010 17:42:13 GMT]]></title><description><![CDATA[<p>okay, ich war wohl doch einfach nur blind.<br />
ich habs geschaft. vielen dank an BasicMan01, opooioi und an alle anderen.<br />
Alles funktioniert jezt so wie es sollte.<br />
einen schönen Abend noch <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/1906913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906913</guid><dc:creator><![CDATA[TheJoker]]></dc:creator><pubDate>Fri, 04 Jun 2010 17:42:13 GMT</pubDate></item></channel></rss>