<?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[Schwierigkeiten mit string.find()!]]></title><description><![CDATA[<p>Hi,</p>
<p>ich ahbe ein Programm geschrieben, in dem ich mehrer string.find() aufrufe verwende, die funktionieren auch alle soweit.</p>
<p>Einzig diese Beiden Funktionieren nicht!<br />
test.find(&quot;{&quot;);<br />
und<br />
test.find(&quot;}&quot;);</p>
<p>Er ignoriert diese Zeichen einfach.</p>
<p>Dabei soll das Programm eigentlich bestimmte Zeilen aus einer Datei auslesen, und zwar alle die Bestimmte Dinge nicht enthalten, bei allen anderen Dingen die abgefangen werden sollen funktioniert das, nur die geschweiften Klammern kann er nicht erkennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169944/schwierigkeiten-mit-string-find</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 21:21:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169944.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Jan 2007 12:26:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:27:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich ahbe ein Programm geschrieben, in dem ich mehrer string.find() aufrufe verwende, die funktionieren auch alle soweit.</p>
<p>Einzig diese Beiden Funktionieren nicht!<br />
test.find(&quot;{&quot;);<br />
und<br />
test.find(&quot;}&quot;);</p>
<p>Er ignoriert diese Zeichen einfach.</p>
<p>Dabei soll das Programm eigentlich bestimmte Zeilen aus einer Datei auslesen, und zwar alle die Bestimmte Dinge nicht enthalten, bei allen anderen Dingen die abgefangen werden sollen funktioniert das, nur die geschweiften Klammern kann er nicht erkennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207043</guid><dc:creator><![CDATA[Kollyn]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:36:46 GMT]]></title><description><![CDATA[<p>Arbeitest du mit string oder CString? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207052</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:45:51 GMT]]></title><description><![CDATA[<p>Also hier mal das ganze Programm, wie gesagt die anderen find funktionieren, die Zeilen die z.B. # enthalten werden nicht in der Konsole angezeigt.<br />
Natürlich is das nur zum test, später solle die Zeilen die den kriterien entsprechen bearbeitet werden!</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

int main(int argc, char* argv[])
{
	string filename;
	string klammera =&quot;{&quot;;
	string klammerz = &quot;}&quot;;
	filename = &quot;idocraw.txt&quot;;
	ifstream file;
	int i=0,x=0;
	string test;
	file.open(filename.c_str());
	if (file.is_open())
		{
			while(!file.eof())
			{
				while (i&lt;=150)
				{
					getline(file,test);
					i ++;
					if (test.find('#'))
						{
						if(test.find(&quot;typedef&quot;))
							{
							if  (test.find(klammera)) 
								{
									if (test.find(klammerz))

									{
										cout &lt;&lt; test &lt;&lt; endl;
									    x ++;
									}

								}
							}
						}

						}
					getch();
					i=0;
				}
	getch();
	cout &lt;&lt; x;}
	else 
		cout &lt;&lt; &quot;Die Datei kann nicht geöffnet werden.&quot;&lt;&lt;endl;

	getch();
	return 0;
</code></pre>
<p>p.s.: Die If's sind mit absciht getrennt, da Einige von Ihnen , Also z.B: Zeilen die typedef enthalten speziel behandelt werden sollen.</p>
<p>Habe das auch mit test.find(&quot;{&quot;); getestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207058</guid><dc:creator><![CDATA[Kollyn]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:46:50 GMT]]></title><description><![CDATA[<p>Okay, das ist C++, hat nix mit MFC zu tun.<br />
Ich schieb dich mal ins richtige Forum.<br />
<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>Aber evtl. arbeitet das string.find wie CString.Find. Dann bekommst du 0, wenn der String mit dem gesuchten String beginnt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207060</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:47:09 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=9713" rel="nofollow">estartu</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=1" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207062</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:51:06 GMT]]></title><description><![CDATA[<p>Deine Bedingungen sind falsch gestellt - std::string::find() liefert den Wert npos (= -1, konvertiert nach size_t), wenn die Suche fehlgeschlagen ist und den Index des Suchstrings, wenn etwas gefunden wurde. if() interpretiert den Wert 0 als false und jeden anderen Wert als true.</p>
<p>Zusammen heißt das, deine <code>if(test.find(...))</code> werden immer dann übersprungen, wenn die eingelesene Zeile mit dem Suchbegriff beginnt.</p>
<p>PS: Übrigens sieht deine Verschachtelung grauenhaft aus <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/1207069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207069</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 12:52:20 GMT]]></title><description><![CDATA[<p>Du mußt auf string::npos (== -1) vergleichen, d.h. du erhälst mit find die 0-indizierte Position im String,</p>
<pre><code class="language-cpp">if(test.find(&quot;{&quot;) != string::npos) ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1207072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207072</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 10 Jan 2007 12:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 13:01:01 GMT]]></title><description><![CDATA[<p>Naja hier mal die Datei(ausschnitt) die gelesen wird.</p>
<pre><code class="language-cpp">#ifndef E2KNVDM001
#define E2KNVDM001
typedef struct e2knvdm001                         /* Master Kundenstamm Dokumentenanforderung (KNVD)                    */
    {
    char msgfn[3];                                /* Funktion                                                           */
    char doctp[4];                                /* Nachrichtenart                                                     */
    char spras[1];                                /* Sprache der Nachricht                                              */
    char doanz[3];                                /* Feld der Laenge 3 Bytes                                            */
    char dover[1];                                /* Versandzeitpunkt                                                   */
    char nacha[1];                                /* Sendemedium der Nachricht                                          */
    char spras_iso[2];                            /* Sprache nach ISO 639                                               */
    }e2knvdm001;
#endif  E2KNVDM001
</code></pre>
<p>Ist natürlich eine TXT!<br />
Es sollen jetz nur die Zeilen ausgegeben werden, die weder # noch typedef noch { oder } enthalten!<br />
Also nur die Zeilen char ...</p>
<p>Und wenn ich mein Programm laufen lasse, bleiben nur die Zeilen mit { und } sowie die gewollten über.</p>
<p>p.s.: Ja die verschachtelung is ein bisschen weiträumig... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207080</guid><dc:creator><![CDATA[Kollyn]]></dc:creator><pubDate>Wed, 10 Jan 2007 13:01:01 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 13:05:27 GMT]]></title><description><![CDATA[<p>Dann lies mal die Beiträge über dir - die Abfragen <code>if(test.find(...))</code> liefern jeweils 0 (false), wenn die aktuelle Zeile mit dem gesuchten Wert beginnt - bei den Prä#äprozessor-Zeilen und dem typedef ist das der Fall, aber die beiden Klammern-Zeilen haben eine Einrückung und beginnen jeweils mit einem Leerzeichen.</p>
<p>Korrekt lautet deine Abfragebedingung also jeweils <code>if(text.find(...)==string::npos)</code> (und anstelle der zigfach verschachtelten if-Abfrage würde ich lieber ein einziges if() nehmen und die Bedingungen per &amp;&amp; verknüpfen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207089</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Jan 2007 13:05:27 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 13:15:30 GMT]]></title><description><![CDATA[<p>Ok es liegt an der Einrückung, doch habe ich troz dem lesen noch nicht verstanden wie ich das umgehen soll, soll ich npos auf -1 oder auf 0 setzen? bzw. muss ich zählen, wieviel Zeichen das entfernt ist.</p>
<p>if(test.find(&quot;{&quot;)!=-1) ???<br />
Wie gesgat, ich will die Zeilen untern Tisch fallen lassen!</p>
<p>Verschatelt hatte ich jetzt, da es einfacher war , da die If nacheinander reingekommen sind. wenn ich das Prob gelöst habe, mit eure Hilfe, dann Mache ich da eine Raus.</p>
<p>Ok habs gefunden muss nicht !=-1, sondern ==-1! dann klapp es so wie es soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207095</guid><dc:creator><![CDATA[Kollyn]]></dc:creator><pubDate>Wed, 10 Jan 2007 13:15:30 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 13:12:58 GMT]]></title><description><![CDATA[<p>Kollyn schrieb:</p>
<blockquote>
<p>Ok es liegt an der Einrückung, doch habe ich troz dem lesen noch nicht verstanden wie ich das umgehen soll, soll ich npos auf -1 oder auf 0 setzen? bzw. muss ich zählen, wieviel Zeichen das entfernt ist.</p>
</blockquote>
<p>Das sollst du gar nicht selber setzen - npos ist als statisches Element der Klasse std::string im Standard definiert, das mußt du nur verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207098</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 10 Jan 2007 13:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 13:29:54 GMT]]></title><description><![CDATA[<p>Ok Wie gesagt, diese Programm:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

int main(int argc, char* argv[])
{
	string filename;
	string klammera =&quot;{&quot;;
	string klammerz = &quot;}&quot;;
	filename = &quot;idocraw.txt&quot;;
	ifstream file;
	int i=0,x=0;
	string test;
	file.open(filename.c_str());
	if (file.is_open())
		{
		 while ((!file.eof()) &amp;&amp; (i&lt;=150))
		  {
		   getline(file,test);
		   i ++;
		   if ((test.find('#')) &amp;&amp; (test.find(&quot;typedef&quot;)) &amp;&amp;  (test.find(klammera)==-1) &amp;&amp; (test.find(klammerz)==-1) &amp;&amp; (test.find(&quot;/*&quot;)))

			{
			 cout &lt;&lt; test &lt;&lt; endl;
		     x ++;
			}
		 }					
			getch();
			i=0;

	getch();
	cout &lt;&lt; x;
	}
	else 
		cout &lt;&lt; &quot;Die Datei kann nicht geöffnet werden.&quot;&lt;&lt;endl;

	getch();
	return 0;
</code></pre>
<p>macht jetzt genau was es sollen übrigbleiben nur die Zeilen mit char ...</p>
<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="👍"
    /> alle die hier geholfen haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207111</guid><dc:creator><![CDATA[Kollyn]]></dc:creator><pubDate>Wed, 10 Jan 2007 13:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierigkeiten mit string.find()! on Wed, 10 Jan 2007 14:17:03 GMT]]></title><description><![CDATA[<p>Deine Abfrage ist aber immer noch fehlerhaft!<br />
So ist es richtig:</p>
<pre><code class="language-cpp">if(test.find(&quot;#&quot;) == string::npos &amp;&amp; test.find(&quot;typedef&quot;) == string::npos &amp;&amp; ...)
</code></pre>
<p>Du mußt JEDEN string.find() auf string::npos abtesten!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1207154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1207154</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Wed, 10 Jan 2007 14:17:03 GMT</pubDate></item></channel></rss>