Daten auslesen - Es funktioniert, aber irgendwie versteh ich es nicht...
-
so mal eben der code:
#include <iostream> #include <string> #include <fstream> using namespace std; int main(){ int we; string name; string geschlecht; string alter; string groesse; string gewicht; string datensatz; string s_name; cout << "Daten auslesen" << endl; cout << "gesuchter name: " << endl; cin >> s_name; //ofstream file("save_test.txt", ios::in); ifstream r_file; // Datei-Handle string s; r_file.open("save_test.txt", ios::in); // Öffne Datei aus Parameter while (!r_file.eof()) // Solange noch Daten vorliegen { getline(r_file, s); // Lese eine Zeile string suche(s_name); if(!s.find(suche)){ cout << s << endl; // Zeige sie auf dem Bildschirm } } r_file.close(); cin >> we; return 0; }es funzt, nur irgendwie erscheint mir das hier unlogisch...
getline(r_file, s); // Lese eine Zeile string suche(s_name); if(!s.find(suche)){ cout << s << endl; // Zeige sie auf dem Bildschirm }genauer: if(**!**s.find(suche)){
nen denkfehler von mir?
denn ich sage ja wenn nicht das gesuchte gefunden wird - anzeigen.
allerdings genau in dieser konstellation wird der richtige datensatz angezeigt.
Lass ich die Negation weg, werden alle bis auf der gesuchte Datensatz angezeigt.Kann mir das mal jemand bitte erklären?
Danke!
-
Die Abfrage auf ! schliesst 0 mit ein. Wenn 0 aber der Rückgabewert ist, dann trifft das auch zu.
returns the first occurrence of str within the current string, starting at index, string::npos if nothing is found,
http://cppreference.com/cppstring/find.html
Überprüfe die Rückgabe bitte auf string::npos
lg