<?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[Strings vergleichen?]]></title><description><![CDATA[<p>Hallo<br />
Ich bastle grade an einem CD Verwaltungsprogramm (Konsole). Ich schreibe die Eingaben vom Benutzer in einer externen .dat Datei und will von dort wieder lesen.<br />
Der Benutzer soll ein Suchwort eingeben können (habs mit getline(cin, eingabe);)<br />
und ich wills so machen, dass wenn eingabe=Titel (aus der Datei) ist er dann z.b &quot;hallo wie gehts&quot; ausgibt.<br />
Ich habs schon probiert (siehe if Schleife mit compare in der Mitte des Quellcodes^^) aber die Stelle bei der ich die 2 Strings vergleiche kriegt ich einfach net hin T_T</p>
<p>Hier mein Code dazu:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

struct Lied
{
 string Titel;
 string CDname;
 string Kuenstler;
 string Leange;
 string Musikrichtung;
};

void datenspeichern(Lied Daten){
ofstream out (&quot;CD.dat&quot;, ios::app);    //speichert alle Eingaben in die Datei &quot;CD.txt&quot;
cout &lt;&lt;endl;
cprintf (&quot;Geben sie die Musikdaten ein: &quot;);

cout &lt;&lt;endl;
cprintf (&quot;Titel des Liedes:&quot;);
getline(cin,Daten.Titel);
out &lt;&lt;  Daten.Titel;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;CD Name, das das Lied enthealt:&quot;);
getline(cin,Daten.CDname);
out &lt;&lt;  Daten.CDname;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Kuenstler:&quot;);
getline(cin,Daten.Kuenstler);
out &lt;&lt; Daten.Kuenstler;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Leange des Liedes:&quot;);
getline(cin,Daten.Leange);
out &lt;&lt;  Daten.Leange;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Musikrichtung des Liedes:&quot;);
getline(cin,Daten.Musikrichtung);
out &lt;&lt;  Daten.Musikrichtung;

cout &lt;&lt; endl;
cprintf (&quot;Ihre Daten wurden gespeichert!!&quot;);

out.close();

}
void datensuchen(Lied Daten){
string suche;
int gefundene_titel=0;
ifstream in (&quot;CD.dat&quot;);
if(!in){
        cprintf (&quot;Datei kann nicht geoeffnet werden, pruefen sie ob die Datei CD.dat im selben Ordner liegt!!&quot;);
        cout &lt;&lt; endl;
        }
cprintf (&quot;Geben sie Ihren Suchbegriff ein: &quot;);
getline(cin,suche);
while (!in.eof()){  //Die Datei CD.dat wird bis zu Ende gelesen
      getline(in,Daten.Titel);
      getline(in,Daten.CDname);
      getline(in,Daten.Kuenstler);
      getline(in,Daten.Leange);
      getline(in,Daten.Musikrichtung);
      if (Daten.Titel.compare(suche)                       // Das hier funktioniert nicht !!!
     || Daten.CDname.compare(suche) || Daten.Kuenstler.compare(suche)
      || Daten.Leange.compare(suche) || Daten.Musikrichtung.compare(suche))
        {
      gefundene_titel++;
      cout &lt;&lt; endl;
      cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; Daten.Titel &lt;&lt;endl;
      cout &lt;&lt; &quot;ist auf der CD: &quot; &lt;&lt; Daten.CDname &lt;&lt;endl;
      cout &lt;&lt; &quot;Kuenstler: &quot; &lt;&lt; Daten.Kuenstler &lt;&lt;endl;
      cout &lt;&lt; &quot;Abspieldauer: &quot; &lt;&lt; Daten.Leange &lt;&lt;endl;
      cout &lt;&lt; &quot;Musikrichtung: &quot; &lt;&lt; Daten.Musikrichtung &lt;&lt;endl;
      }
}
cout &lt;&lt; endl;
cprintf (&quot;Es wurden &quot;);
cout &lt;&lt; gefundene_titel;
cprintf (&quot; Titel gefunden&quot;);
in.close();

}

void main () {
int warte;
int eingabe;

Lied Daten;
textcolor(CYAN);
while (true){
cprintf (&quot;2.Daten speichern&quot;);
cout &lt;&lt; endl;
cprintf (&quot;3.Daten suchen&quot;);
cout &lt;&lt; endl;
cprintf (&quot;4.Exit&quot;);
cout &lt;&lt; endl &lt;&lt;endl;
cprintf (&quot;Weahlen sie ein Menuepunkt aus: &quot;);

char c = getch();
eingabe = c-'0';
cout &lt;&lt; endl;
//cin &gt;&gt; eingabe;

if (eingabe==2){
datenspeichern(Daten);
}
if (eingabe==3){
datensuchen(Daten);
}
if (eingabe==4){
exit(0);
}
if (eingabe!=1 &amp;&amp; eingabe!=2 &amp;&amp; eingabe!=3 &amp;&amp; eingabe!=4){
cout &lt;&lt; &quot;Ungueltige Eingabe, geben sie ein Menuepunkt an&quot;;
}
cout &lt;&lt; endl;
cprintf (&quot; druecken sie eine beliebige Taste um zurueck zum Hauptmenue zu gelangen&quot;);
getch();
clrscr();
cout &lt;&lt; endl;
}
cin &gt;&gt; warte;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/140691/strings-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 05:57:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140691.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Mar 2006 15:57:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 15:57:13 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich bastle grade an einem CD Verwaltungsprogramm (Konsole). Ich schreibe die Eingaben vom Benutzer in einer externen .dat Datei und will von dort wieder lesen.<br />
Der Benutzer soll ein Suchwort eingeben können (habs mit getline(cin, eingabe);)<br />
und ich wills so machen, dass wenn eingabe=Titel (aus der Datei) ist er dann z.b &quot;hallo wie gehts&quot; ausgibt.<br />
Ich habs schon probiert (siehe if Schleife mit compare in der Mitte des Quellcodes^^) aber die Stelle bei der ich die 2 Strings vergleiche kriegt ich einfach net hin T_T</p>
<p>Hier mein Code dazu:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

struct Lied
{
 string Titel;
 string CDname;
 string Kuenstler;
 string Leange;
 string Musikrichtung;
};

void datenspeichern(Lied Daten){
ofstream out (&quot;CD.dat&quot;, ios::app);    //speichert alle Eingaben in die Datei &quot;CD.txt&quot;
cout &lt;&lt;endl;
cprintf (&quot;Geben sie die Musikdaten ein: &quot;);

cout &lt;&lt;endl;
cprintf (&quot;Titel des Liedes:&quot;);
getline(cin,Daten.Titel);
out &lt;&lt;  Daten.Titel;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;CD Name, das das Lied enthealt:&quot;);
getline(cin,Daten.CDname);
out &lt;&lt;  Daten.CDname;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Kuenstler:&quot;);
getline(cin,Daten.Kuenstler);
out &lt;&lt; Daten.Kuenstler;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Leange des Liedes:&quot;);
getline(cin,Daten.Leange);
out &lt;&lt;  Daten.Leange;
out &lt;&lt;endl;

cout &lt;&lt;endl;
cprintf (&quot;Musikrichtung des Liedes:&quot;);
getline(cin,Daten.Musikrichtung);
out &lt;&lt;  Daten.Musikrichtung;

cout &lt;&lt; endl;
cprintf (&quot;Ihre Daten wurden gespeichert!!&quot;);

out.close();

}
void datensuchen(Lied Daten){
string suche;
int gefundene_titel=0;
ifstream in (&quot;CD.dat&quot;);
if(!in){
        cprintf (&quot;Datei kann nicht geoeffnet werden, pruefen sie ob die Datei CD.dat im selben Ordner liegt!!&quot;);
        cout &lt;&lt; endl;
        }
cprintf (&quot;Geben sie Ihren Suchbegriff ein: &quot;);
getline(cin,suche);
while (!in.eof()){  //Die Datei CD.dat wird bis zu Ende gelesen
      getline(in,Daten.Titel);
      getline(in,Daten.CDname);
      getline(in,Daten.Kuenstler);
      getline(in,Daten.Leange);
      getline(in,Daten.Musikrichtung);
      if (Daten.Titel.compare(suche)                       // Das hier funktioniert nicht !!!
     || Daten.CDname.compare(suche) || Daten.Kuenstler.compare(suche)
      || Daten.Leange.compare(suche) || Daten.Musikrichtung.compare(suche))
        {
      gefundene_titel++;
      cout &lt;&lt; endl;
      cout &lt;&lt; &quot;Titel: &quot; &lt;&lt; Daten.Titel &lt;&lt;endl;
      cout &lt;&lt; &quot;ist auf der CD: &quot; &lt;&lt; Daten.CDname &lt;&lt;endl;
      cout &lt;&lt; &quot;Kuenstler: &quot; &lt;&lt; Daten.Kuenstler &lt;&lt;endl;
      cout &lt;&lt; &quot;Abspieldauer: &quot; &lt;&lt; Daten.Leange &lt;&lt;endl;
      cout &lt;&lt; &quot;Musikrichtung: &quot; &lt;&lt; Daten.Musikrichtung &lt;&lt;endl;
      }
}
cout &lt;&lt; endl;
cprintf (&quot;Es wurden &quot;);
cout &lt;&lt; gefundene_titel;
cprintf (&quot; Titel gefunden&quot;);
in.close();

}

void main () {
int warte;
int eingabe;

Lied Daten;
textcolor(CYAN);
while (true){
cprintf (&quot;2.Daten speichern&quot;);
cout &lt;&lt; endl;
cprintf (&quot;3.Daten suchen&quot;);
cout &lt;&lt; endl;
cprintf (&quot;4.Exit&quot;);
cout &lt;&lt; endl &lt;&lt;endl;
cprintf (&quot;Weahlen sie ein Menuepunkt aus: &quot;);

char c = getch();
eingabe = c-'0';
cout &lt;&lt; endl;
//cin &gt;&gt; eingabe;

if (eingabe==2){
datenspeichern(Daten);
}
if (eingabe==3){
datensuchen(Daten);
}
if (eingabe==4){
exit(0);
}
if (eingabe!=1 &amp;&amp; eingabe!=2 &amp;&amp; eingabe!=3 &amp;&amp; eingabe!=4){
cout &lt;&lt; &quot;Ungueltige Eingabe, geben sie ein Menuepunkt an&quot;;
}
cout &lt;&lt; endl;
cprintf (&quot; druecken sie eine beliebige Taste um zurueck zum Hauptmenue zu gelangen&quot;);
getch();
clrscr();
cout &lt;&lt; endl;
}
cin &gt;&gt; warte;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1017664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017664</guid><dc:creator><![CDATA[letonin]]></dc:creator><pubDate>Thu, 16 Mar 2006 15:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 16:13:49 GMT]]></title><description><![CDATA[<p>compare liefert 0 also false wenn die strings übereinstimmen.<br />
Verwende doch einfach if(s1 == s2)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017679</guid><dc:creator><![CDATA[gh]]></dc:creator><pubDate>Thu, 16 Mar 2006 16:13:49 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 16:39:19 GMT]]></title><description><![CDATA[<p>hi<br />
das geht leider auch nicht, wenn man es in</p>
<pre><code class="language-cpp">if (Daten.Titel==suche)
</code></pre>
<p>Obwohl das Argument stimmt wird die die if Anweisung nicht aktiviert. Selbst mein Lehrer ist daran verzweifelt, also muss das Problem net leicht zu lösen sein denk ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017701</guid><dc:creator><![CDATA[letonin]]></dc:creator><pubDate>Thu, 16 Mar 2006 16:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 16:44:44 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Hast du mit dem Debugger geteste, ob die der Vergleich positiv ausfällt. Wenn dies der Fall ist, so sollte auch der Anweisungsteil abgearbeitet werden.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017710</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 16 Mar 2006 16:44:44 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 17:07:13 GMT]]></title><description><![CDATA[<p>ich hab die ganze Routine überprüft mit == und die Werte die ich eingebe sind gleich der Variable. Wenn ich compare benutze geht er schon in die If Anweisung, aber er zeigt alles in der Datei an -.-</p>
<p>Zurzeit probier ichs mit nem Char Array, aber auch erfolgslos xD<br />
Vielleicht gehts ja bis abends...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017731</guid><dc:creator><![CDATA[letonin]]></dc:creator><pubDate>Thu, 16 Mar 2006 17:07:13 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 18:45:07 GMT]]></title><description><![CDATA[<p>Also irgend etwas machts du noch falsch.<br />
Ich sage schon, dass die compare Methode in Bezug auf die if-Anweisung genau das gegenteilige Ergebnis liefert. Also wenn bei titel == suche nicht in den IF-Zweig gelaufen wird, dann läuft er logischer Weise bei titel.compare(suche) in den IF-Zweig. Das beweist nur, das die beiden Strings eben nicht gleich sind. Du must einfach ein bisschen probieren um rauszubekommen was du falsch machst. Auf jeden Fall kannst du dich auf die Regeln verlassen. Wenn &quot;titel&quot; und &quot;suche&quot; beide von Typ string sind und beide den gleichen Inhalt haben, dann liefert der Ausdruck &quot;titel == suche&quot; mit Sicherheit true.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017797</guid><dc:creator><![CDATA[gh]]></dc:creator><pubDate>Thu, 16 Mar 2006 18:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 18:51:26 GMT]]></title><description><![CDATA[<p>jo da hast du völlig Recht gh<br />
Ich verwende wieder if(s1==s2) und hab jetzt den Fehler gefunden, aber weiß net wie ich ihn behebe.<br />
Also bis jetzt war es so. Wenn ich als Eingabe z.B. &quot;Greenday&quot; eingebe findet er nichts.<br />
Sobald ich aber Greenday + ein Leerzeichen eingebe spuckt er mir alles aus, also Titel, CDname usw.</p>
<p>Jetzt ist es aber natürlich doof wenn der Benutzer jedes mal wenn er was eingibt noch n Leerzeichen mit eingeben muss um was zu finden. Wie kann ich daher dieses Problem beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017801</guid><dc:creator><![CDATA[letonin]]></dc:creator><pubDate>Thu, 16 Mar 2006 18:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Thu, 16 Mar 2006 18:55:58 GMT]]></title><description><![CDATA[<p>irgend wie muss ich ein<br />
out &lt;&lt; backspace hinkriegen, kenne aber die Syntax nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1017808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1017808</guid><dc:creator><![CDATA[letonin]]></dc:creator><pubDate>Thu, 16 Mar 2006 18:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Fri, 17 Mar 2006 09:25:25 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du könntest zum Beispiel die Benutzeingabe (&quot;Greenday&quot;) mit der Datenbank vergeleichen und dabei immer die letzte Stelle in der Datenbank abschneiden.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1018052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1018052</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 17 Mar 2006 09:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Fri, 17 Mar 2006 09:58:06 GMT]]></title><description><![CDATA[<p>Du könntest auch mal sowas ausgeben: &quot;|&quot; &lt;&lt; Titel &lt;&lt; &quot;|&quot;, dann siehst Du wer da ein Leerzeichen (Zeilenwechsel? Tab?) wo hat. Wenn sich ein Muster erkennen lässt (weiss z.B. nicht auswendig ob getline das \n mit in den string packt) die Strings entsprechend vor dem Vergleich modifizieren.</p>
<p>Und wenn Dein Lehrer an sowas verzweifelt, statt es Dir erklären zu können, sollte er vielleicht mal Grundlagen pauken...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1018064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1018064</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 17 Mar 2006 09:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Fri, 17 Mar 2006 09:58:57 GMT]]></title><description><![CDATA[<p>Du könntest auch mal sowas ausgeben: &quot;|&quot; &lt;&lt; Titel &lt;&lt; &quot;|&quot;, dann siehst Du wer da ein Leerzeichen (Zeilenwechsel? Tab?) wo hat. Wenn sich ein Muster erkennen lässt (weiss z.B. nicht auswendig ob getline das \n mit in den string packt) die Strings entsprechend vor dem Vergleich modifizieren.</p>
<p>Und wenn Dein Lehrer an sowas verzweifelt, statt es Dir erklären zu können, sollte er vielleicht mal Grundlagen pauken...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1018065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1018065</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 17 Mar 2006 09:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Strings vergleichen? on Fri, 17 Mar 2006 10:06:21 GMT]]></title><description><![CDATA[<p>möglich wäre auch ein</p>
<pre><code class="language-cpp">size_t p = Lied.Titel.find(&quot;Greenday&quot;);
if(p != Lied.Titel.npos)
{
   // Titel enthält die Zeichenkette Greenday
}
</code></pre>
<p>Dann suchst du nicht nach dem genauen Titel, sondern nur, ob das Wort im Titel enthalten ist. Find ich persönlich auch praktischer (siehe winamp, da is das auch so)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1018071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1018071</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Fri, 17 Mar 2006 10:06:21 GMT</pubDate></item></channel></rss>