<?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[Zeichen vergleichen]]></title><description><![CDATA[<p>Tach zusammen</p>
<p>Kurze Frage:</p>
<pre><code class="language-cpp">char text1[9] = &quot;DiesText&quot;;
char text2[4] = &quot;sTe&quot;;
</code></pre>
<p>Es soll über prüft werden ob sTE in DiesText vorhanden ist?<br />
Wie könnte man das am besten machen?</p>
<p>Ok, das oben habe ich. Aber angenommen es sähe so aus:</p>
<pre><code class="language-cpp">char *text	= new char;
	char *find	= new char;

	cout	&lt;&lt; &quot;Bitte geben Sie einen Text ein:&quot;;
	cin      &gt;&gt; text;
	cout	&lt;&lt; endl &lt;&lt; &quot;Nach was soll gesucht werden:&quot;;
	cin      &gt;&gt; find;
</code></pre>
<p>Wie bekomme ich dann die Länge der Arrays raus. Keine enthaltene Funktion sondern selfmade..</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133042/zeichen-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:04:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133042.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jan 2006 22:01:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeichen vergleichen on Sat, 14 Jan 2006 22:42:13 GMT]]></title><description><![CDATA[<p>Tach zusammen</p>
<p>Kurze Frage:</p>
<pre><code class="language-cpp">char text1[9] = &quot;DiesText&quot;;
char text2[4] = &quot;sTe&quot;;
</code></pre>
<p>Es soll über prüft werden ob sTE in DiesText vorhanden ist?<br />
Wie könnte man das am besten machen?</p>
<p>Ok, das oben habe ich. Aber angenommen es sähe so aus:</p>
<pre><code class="language-cpp">char *text	= new char;
	char *find	= new char;

	cout	&lt;&lt; &quot;Bitte geben Sie einen Text ein:&quot;;
	cin      &gt;&gt; text;
	cout	&lt;&lt; endl &lt;&lt; &quot;Nach was soll gesucht werden:&quot;;
	cin      &gt;&gt; find;
</code></pre>
<p>Wie bekomme ich dann die Länge der Arrays raus. Keine enthaltene Funktion sondern selfmade..</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966783</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sat, 14 Jan 2006 22:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 00:16:17 GMT]]></title><description><![CDATA[<p>in deinem fall ist text bzw. find kein char-array, sondern ein zeiger auf ein zeichen.<br />
ich würde persönlich zu std::string raten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966827</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Sun, 15 Jan 2006 00:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 11:42:04 GMT]]></title><description><![CDATA[<pre><code>#include &lt;string.h&gt;

**************

    char *text;
    char *find;
    cout    &lt;&lt; &quot;Bitte geben Sie einen Text ein:&quot;;
    cin      &gt;&gt; text;
    cout    &lt;&lt; endl &lt;&lt; &quot;Nach was soll gesucht werden:&quot;;
    cin      &gt;&gt; find;

    char* pos=strstr(text, find);

    if (pos==NULL) {
        cout &lt;&lt;endl&lt;&lt;&quot;String not found&quot;;
    } else {
        cout &lt;&lt;endl&lt;&lt;&quot;String found on position &quot;&lt;&lt; int(pos-text);
    }
</code></pre>
<p>So ungefähr sollte es gehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966950</guid><dc:creator><![CDATA[Maverick89]]></dc:creator><pubDate>Sun, 15 Jan 2006 11:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 11:45:52 GMT]]></title><description><![CDATA[<p>Ach ja, wenn du daß manuell machen willst - musst du einfach die array-grenzen durchzellen. Die strings ja werden per \0 geendet.</p>
<pre><code>char* tmp = text;
int n=0;
while ( *(tmp++)!=NULL ) {
    n++;
}
</code></pre>
<p>Am ende hast du die länge des textes ohne den \0 im n.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966955</guid><dc:creator><![CDATA[Maverick89]]></dc:creator><pubDate>Sun, 15 Jan 2006 11:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 11:50:01 GMT]]></title><description><![CDATA[<p>Maverick89 schrieb:</p>
<blockquote>
<pre><code>cout &lt;&lt;endl&lt;&lt;&quot;String found on position &quot;&lt;&lt; int(pos-text);
</code></pre>
</blockquote>
<p>Mir fällt das jetzt schon in mehreren deiner Postings auf dass du nicht castest sondern temporäre Variablen erzeugst. Hat das irgend einen besonderen Grund ?<br />
Würde das so machen</p>
<pre><code>cout &lt;&lt;endl&lt;&lt;&quot;String found on position &quot;&lt;&lt; (int)(pos-text);
</code></pre>
<p>Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966958</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 15 Jan 2006 11:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 11:55:46 GMT]]></title><description><![CDATA[<p>Sorry, habe nicht verstanden was du meinst, bin aber für Kritik offen <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 />
Wenn du meinst, dass ich viele neue unnötige variabeln einbinde - das war nur als beispiel - meistens bin ich mit dem speicher extrem sparsam <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>
<p>Was die Korrektur angeht - naja - geschmackssache, Straustrup schrieb es in seinen Buch manchmal auch so wie ich jetzt <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>
<p>Gruß,<br />
Mav</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966961</guid><dc:creator><![CDATA[Maverick89x]]></dc:creator><pubDate>Sun, 15 Jan 2006 11:55:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 12:10:30 GMT]]></title><description><![CDATA[<p>Keine Kritik eher eine Frage.<br />
Hab's jetzt ausprobiert. g++ macht aus beiden Versionen den gleichen code. Also nur Geschmacksache.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966970</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 15 Jan 2006 12:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 12:53:33 GMT]]></title><description><![CDATA[<p>Super.. Danke für die zahlreichen Antworten..</p>
<p>Allerdings bleibt ein Problem..</p>
<p>Ich habe eine statische und eine dynamische Version des Problems.</p>
<p>Die statische habe ich so gelöst:</p>
<pre><code class="language-cpp">char text1[9]		= &quot;DiesTest&quot;;
	char find[4]		= &quot;sTe&quot;;

	int checkValue		= 0;

	int i = 0;
	while(i &lt; 8)
	{
		if(find[0] == text1[i] &amp;&amp; find[1] == text1[i+1] &amp;&amp; find[2] == text1[i+2])
		{
			checkValue = 1;
		}

		i++;
	}

	if(checkValue &gt; 0)
	{
		cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
	}
	else
	{
		cout &lt;&lt; &quot;Nicht gefunden&quot; &lt;&lt; endl;
	}
</code></pre>
<p>Bleibt die dynamische wo der User halt den Text eingibt in dem gesucht werden soll und dann noch eingeben kann was in dem Text gesucht werden soll..</p>
<pre><code class="language-cpp">int getFieldCount(char *text)
{
	int fields = 0;
	while(*(text++) != NULL)
	{
		fields++;
	}

	return fields;
}

int _tmain(int argc, _TCHAR* argv[])
{
	char *text1	= new char;
	char *find	= new char;

	cout	&lt;&lt; &quot;Bitte geben Sie einen Text ein:&quot;;
	cin		&gt;&gt; text1;
	cout	&lt;&lt; endl &lt;&lt; &quot;Nach was soll gesucht werden:&quot;;
	cin		&gt;&gt; find;

	cout	&lt;&lt; endl &lt;&lt; endl;

	cout	&lt;&lt; text1 &lt;&lt; endl;
	cout	&lt;&lt; find &lt;&lt; endl;

	cout	&lt;&lt; &quot;Anzahl der Felder in text&quot; &lt;&lt; &quot; &quot; &lt;&lt; getFieldCount(text1) &lt;&lt; endl;
	cout	&lt;&lt; &quot;Anzahl der Felder in find&quot; &lt;&lt; &quot; &quot; &lt;&lt; getFieldCount(find) &lt;&lt; endl &lt;&lt; endl;

		int checkValue		= 0;

	int i = 0;
	while(i &lt; getFieldCount(text1))
	{
		if(find[0] == text1[i] &amp;&amp; find[1] == text1[i+1] &amp;&amp; find[2] == text1[i+2])
		{
			checkValue = 1;
		}

		i++;
	}

	if(checkValue &gt; 0)
	{
		cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
	}
	else
	{
		cout &lt;&lt; &quot;Nicht gefunden&quot; &lt;&lt; endl;
	}

	system(&quot;PAUSE&quot;);
	return EXIT_SUCCESS;
}
</code></pre>
<p>Das if() ist ja jetzt nicht mehr zu gebrauchen da die Länge des zu suchenden Teils dynamisch ist. Hat da jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/966996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/966996</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 12:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 13:22:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Hat da jemand eine Idee?</p>
</blockquote>
<p>Klar!<br />
Mit &lt;string.h&gt; - strlen(char*);<br />
Ohne - da habe ich eine passende Funktion zum durchzählen oben schon geschrieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/967025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967025</guid><dc:creator><![CDATA[Maverick89]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 13:37:31 GMT]]></title><description><![CDATA[<p>Ja aber wie durchzählen? Angenommen der text ist 8 Felder lang.. Und die zeile die gesucht werden soll 3 felder lang. Dann zähle ich in der ersten Schleife die 8 Felder und muss dann die 3 gesuchten Felder zusammenbauen und dann mit jeweils den nächsten 3 Feldern des Textes vergleichen. Nur ich kann kein statisches if wie im ersten Beispiel mehr bauen wo ich genau wusste das ich drei Felder vergleichen muss.. Wie krieg ich das denn jetzt raus? Die Funktion habe ich ja eingebaut im zweiten Bsp.. getFieldCount..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967034</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 13:32:11 GMT]]></title><description><![CDATA[<p>Hint: noch eine schleife.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967035</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 13:42:36 GMT]]></title><description><![CDATA[<p>ZuK schrieb:</p>
<blockquote>
<p>Maverick89 schrieb:</p>
<blockquote>
<pre><code>cout &lt;&lt;endl&lt;&lt;&quot;String found on position &quot;&lt;&lt; int(pos-text);
</code></pre>
</blockquote>
<p>Mir fällt das jetzt schon in mehreren deiner Postings auf dass du nicht castest sondern temporäre Variablen erzeugst. Hat das irgend einen besonderen Grund ?<br />
Würde das so machen</p>
<pre><code>cout &lt;&lt;endl&lt;&lt;&quot;String found on position &quot;&lt;&lt; (int)(pos-text);
</code></pre>
<p>Kurt</p>
</blockquote>
<p>Der Unterschied ist der, dass der Ausdruck</p>
<pre><code class="language-cpp">int(pos-text)
</code></pre>
<p>ein sogenanter static-cast ist und</p>
<pre><code class="language-cpp">(int)(pos-text)
</code></pre>
<p>ein C-Cast, bei dem es dem Compiler überlassen bleibt, welchen Cast er durchführt. D.h. hier kann auch ein reinterpret_cast oder ein const_cast geschehen, dem man vielleicht gar nicht will. In so einem Fall würde ein versuchter konkreter static_cast einen Compiler-Fehler verursachen.<br />
Damit man zur Laufzeit keine bösen Überaschungen erlebt, ist der static_cast immer vorzuziehen. So gesehen ist</p>
<pre><code class="language-cpp">int(pos-text)
</code></pre>
<p>der 'bessere' Code. In diesem konkreten Beispiel sollte der Compiler aber in beiden Fällen identischen Code erzeugen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967041</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 13:48:22 GMT]]></title><description><![CDATA[<p>Hm.. ok.. jetzt kann ich nicht mehr folgen..<br />
Die funktion getFieldCount gibt doch einen int zurück.. Zudem geht es mir eher um die Logik des ganzen.. Ich verstehe das mit den zwei Schleifen noch nicht so recht.. Das casten ist erstmal nebensache.. Das ist elfte Klasse Gymnasium Programmieren.. Es geht echt nur um die Logik..</p>
<p>Hier bin ich schon an der Stelle, denke ich, an der das erste Zeichen aus text mit dem ersten Zeichen aus find übereinstimmt.. Ich komme aber nicht weiter..</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; getFieldCount(text); i++)
	{
		for(int x = 0; x &lt; getFieldCount(find); x++)
		{
			if(find[x] == text[i])
			{

			}
			else
			{
				break;
			}
		}
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/967045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967045</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 13:48:22 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 14:05:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if(find[x] == text[i+x])
</code></pre>
<p>Edit: Natürlich must du schon vor der inneren schleife überprüfen ob das zeichen text[i] mit find[0] übereinstimmt. Nur dann darf die innere schleife laufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967053</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 14:19:03 GMT]]></title><description><![CDATA[<p>Ok.. Ich glaub ich geb's auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also Code Müsste demnach vor der inneren Schleife so aussehen?</p>
<pre><code class="language-cpp">if(find[0] == text[i])
</code></pre>
<p>Leuchtet ein.</p>
<p>So jetzt sind wir in der inneren Schleife wenn das erste Zeichen von find mit einem beliebigen von text übereinstimmt.. Andernfalls kann es ja keine Übereinstimmung geben..</p>
<p>Was soll jetzt in der inneren Schleife passieren. Wie kann ich jetzt abfragen ob die n Werte aus find mit den n Werten aus text übereinstimmen?</p>
<p>Mein Problem ist ganz einfach das ich nicht weiß wie ich in der inneren Schleife überprüfen soll..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967071</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 14:38:01 GMT]]></title><description><![CDATA[<p>Würde das ungefähr so machen</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; getFieldCount(text); i++) {
        if ( text[i] == find [0] ) {
           int x;
           for( x = 0; x &lt; getFieldCount(find); x++) {
              if(find[x] != text[i+x]) // nicht gefunden weiter mit der äusseren schleife
                 break;
           }
           if ( x == getFieldCount(find) ) // gefunden 
              return true;
        }       
    }
    return false;
</code></pre>
<p>Natürlich musst du in der inneren schleife noch überprüfen dass du nicht über das ende von text hinaus zugreifst<br />
Kurt</p>
<p>Edit: Logicfehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967078</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 14:49:27 GMT]]></title><description><![CDATA[<p>realmontanakid schrieb:</p>
<blockquote>
<p>Ok.. Ich glaub ich geb's auf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>keine Panik; wir sind bei Dir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>realmontanakid schrieb:</p>
<blockquote>
<p>Mein Problem ist ganz einfach das ich nicht weiß wie ich in der inneren Schleife überprüfen soll..</p>
</blockquote>
<p>Nun Du musst entscheiden ob alle Zeichen übereinstimmen. Das tut man gemeinhin z.B. so:</p>
<pre><code class="language-cpp">int checkValue        = 0;

    int find_len = getFieldCount(find);
    int ende = getFieldCount(text1) - find_len;
    for( int i = 0; i &lt; ende &amp;&amp; checkValue == 0; ++i )
    {
        bool gefunden = true;   // mal angenommen wir hätten den Text gefunden
        for( int j = 0; j &lt; find_len &amp;&amp; gefunden; ++j )
        {
            if( text1[i+j] != find[j] )  // nein; passt nicht
                gefunden = false;
        }
        if( gefunden )
        {
            checkValue = 1;
        }
    }
</code></pre>
<p>Die Variablen 'find' und 'text1' solltest Du zu std:.string's machen, das ist viel einfacher zu handhaben. In Deinem Original Code</p>
<p>realmontanakid schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int _tmain(int argc, _TCHAR* argv[])
{
	char *text1	= new char;
	char *find	= new char;
</code></pre>
</blockquote>
<p>hast Du nur Platz für genau ein Zeichen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967112</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 14:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 15:30:04 GMT]]></title><description><![CDATA[<p>So ich glaub ich hab es... Man man..</p>
<pre><code class="language-cpp">int checkValue		= 0;

	for(int i = 0; i &lt; getFieldCount(text); i++)
	{
		if(find[0] == text[i])
		{
			for(int x = 0; x &lt; getFieldCount(find); x++)
			{
				if(find[x] == text[i+x])
				{
					checkValue++;
				}
			}
		}
		else
		{
			continue;
		}
	}

	if(checkValue == getFieldCount(find))
	{
		cout &lt;&lt; &quot;Gefunden&quot; &lt;&lt; endl;
	}
	else
	{
		cout &lt;&lt; &quot;Nicht gefunden&quot; &lt;&lt; endl;
	}
</code></pre>
<p>Wenn checkValue == getFieldCount von find ist muss er ja die Anzahl an Übereinstimmungen gefunden haben die find selbst als Anzahl Felder hat..</p>
<p>Vielen Dank für eure Geduld..</p>
<p>(Soll nich heissen das das der letzte Post war <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967197</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 15:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 15:45:42 GMT]]></title><description><![CDATA[<p>realmontanakid schrieb:</p>
<blockquote>
<p>So ich glaub ich hab es...</p>
</blockquote>
<p>Überleg' mal ..<br />
'text' sei &quot;.....ab....ab....&quot; und 'find' sei &quot;abcd&quot;. Dann behaupte ich, dass Dein Algorithmus &quot;Gefunden&quot; ausgibt, da er 4 mal - nämlich 2mal für jeweils 'ab' - den Wert 'checkValue' inkrementiert.</p>
<p>Zudem greift der Algorithmus auch auf Zeichen zu, die hinter (!) 'text' im Speicher stehen. Das max. erreichbare 'i' ist (Länge von 'text' - 1). Zu diesem 'i' wird in der inneren Schleife noch max. (Länge von 'find' - 1) addiert und das liegt immer außerhalb von 'text'.</p>
<p>Zum dritten hat Dein Algorithmus O2-Komplexität. Mit jedem Durchlauf von i bestimmst Du in</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; getFieldCount(text); i++)
</code></pre>
<p>'getFieldCount' wieder die Länge von 'text'. Das bedeutet, wenn der Algorithmus für 100 Zeichen 1 Sekunde braucht, so brauchst Du bei 1000 Zeichen nicht 10 Sekunden sondern 100s und bei 10000 Zeichen 10000s - also knapp drei Stunden ...<br />
Speichere das Ergebnis von getFieldCount(text) einfach in einer Variablen - siehe mein letztes Posting.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967224</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 15:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 16:08:49 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ok.. Auch das leuchtet ein..<br />
Aber eins verstehe ich nicht an dem Code den du gepostet hast nicht..</p>
<pre><code class="language-cpp">int checkValue        = 0; 

    int find_len = getFieldCount(find); 
    int ende = getFieldCount(text1) - find_len; 
    for( int i = 0; i &lt; ende &amp;&amp; checkValue == 0; ++i ) 
    { 
        bool gefunden = true;   // mal angenommen wir hätten den Text gefunden 
        for( int j = 0; j &lt; find_len &amp;&amp; gefunden; ++j ) 
        { 
            if( text1[i+j] != find[j] )  // nein; passt nicht 
                gefunden = false; 
        } 
        if( gefunden ) 
        { 
            checkValue = 1; 
        } 
    }
</code></pre>
<p>if( text1[i+j] != find[j] ) Das ist der Vergleich.. Aber hier wird doch nur ein Zeichen mit einem anderen Zeichen verglichen.. Wenn ich in DiesText sTe suche dann gefunden doch schon true wenn s gefunden wird, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967253</guid><dc:creator><![CDATA[realmontanakid]]></dc:creator><pubDate>Sun, 15 Jan 2006 16:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 16:32:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool compareStrings (char * what, char * with)
{
   for (size_t i=0; i&lt;strlen(with); ++i) {
      if (what[i] != with[i])    // wenn sich ein Zeichen unterscheidet
         return false;           // sind sie verschieden
   }
   return true;                  // sonst gleich
}

bool contains (chat * str, char * what)
{
   for (size_t i=0; i&lt;strlen(str) - strlen(what); ++i) {
      if (compareStrings(str + i, what))   // wenn von der i'ten Position aus gesehen die Strings gleich sind
         return true;                      // ist der Text enthalten
   }
   return false;                           // sonst nocht
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/967271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967271</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Sun, 15 Jan 2006 16:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichen vergleichen on Sun, 15 Jan 2006 18:35:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if( text1[i+j] != find[j] )  // nein; passt nicht
                gefunden = false;
</code></pre>
<p>realmontanakid schrieb:</p>
<blockquote>
<p>Aber hier wird doch nur ein Zeichen mit einem anderen Zeichen verglichen..</p>
</blockquote>
<p>richtig!</p>
<p>realmontanakid schrieb:</p>
<blockquote>
<p>Wenn ich in DiesText sTe suche dann gefunden doch schon true wenn s gefunden wird, oder?</p>
</blockquote>
<p>Nicht ganz - 'gefunden' wird false, wenn die Zeichen nicht gleich sind.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/967386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/967386</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 15 Jan 2006 18:35:38 GMT</pubDate></item></channel></rss>