Strings vergleichen?
-
hi
das geht leider auch nicht, wenn man es inif (Daten.Titel==suche)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.
-
Hallo
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.
chrische
-
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 -.-
Zurzeit probier ichs mit nem Char Array, aber auch erfolgslos xD
Vielleicht gehts ja bis abends...
-
Also irgend etwas machts du noch falsch.
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 "titel" und "suche" beide von Typ string sind und beide den gleichen Inhalt haben, dann liefert der Ausdruck "titel == suche" mit Sicherheit true.
-
jo da hast du völlig Recht gh
Ich verwende wieder if(s1==s2) und hab jetzt den Fehler gefunden, aber weiß net wie ich ihn behebe.
Also bis jetzt war es so. Wenn ich als Eingabe z.B. "Greenday" eingebe findet er nichts.
Sobald ich aber Greenday + ein Leerzeichen eingebe spuckt er mir alles aus, also Titel, CDname usw.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?
-
irgend wie muss ich ein
out << backspace hinkriegen, kenne aber die Syntax nicht
-
Hallo
Du könntest zum Beispiel die Benutzeingabe ("Greenday") mit der Datenbank vergeleichen und dabei immer die letzte Stelle in der Datenbank abschneiden.
chrische
-
Du könntest auch mal sowas ausgeben: "|" << Titel << "|", 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.
Und wenn Dein Lehrer an sowas verzweifelt, statt es Dir erklären zu können, sollte er vielleicht mal Grundlagen pauken...
-
Du könntest auch mal sowas ausgeben: "|" << Titel << "|", 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.
Und wenn Dein Lehrer an sowas verzweifelt, statt es Dir erklären zu können, sollte er vielleicht mal Grundlagen pauken...
-
möglich wäre auch ein
size_t p = Lied.Titel.find("Greenday"); if(p != Lied.Titel.npos) { // Titel enthält die Zeichenkette Greenday }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)