__int64 an Operator schicken??????????
-
Die Vergleichsklasse (finde_name) wird global deklariert, so daß deine Funktionen sie wiederfinden. Die übrigen Schnipselchen kommen entweder in die main() oder (besser) in eine eigene Funktion, die deine Daten durchsuchen soll (nach dem Einlesen stehen alle Datensätze aus deiner Datei in dem Vektor 'Werte' - find_if arbeitet diesen Vektor durch und liefert den ersten Datensatz, für den finde_name::operator() true zurückliefert (oder Werte.end(), wenn es keinen gibt)).
PS: Wenn du nach anderen Kriterien suchen willst, benötigst du dafür eigene Vergleichsklassen wie finde_nachname oder finde_alter, die analog zu finde_name aufgebaut werden sollten.
-

Ich hab meinen Quelltext noch ein bischen verändert und alles so gemacht wie du gesagt hast aber es geht trotzdem nich !!!#include <string> #include <iostream> #include <fstream> #include <windows.h> using namespace std; string dateiname = "MDB.TXT"; class eintrag { public: string name; string nachna; short alter; string tele; int neu() { ofstream dat_aus; dat_aus.open(dateiname.c_str(), ios_base::out | ios_base::app); cout << "Eintrag hinzufuegen" << endl; cout <<"Name:"; cin >> name; cout <<"Nachname:"; cin >> nachna; cout <<"Alter:"; cin >> alter; cout <<"Telefon:"; cin >> tele; dat_aus << name <<" " << nachna <<" " << alter <<" " << tele << endl; dat_aus.close(); cout << "\nEintrag gespeichert!\n\n\n" <<endl; return 0; } int lesen() { ifstream dat_ein; eintrag eintrag2 ; dat_ein.open(dateiname.c_str(), ios_base::in); dat_ein >> eintrag2.name >> eintrag2.nachna >> eintrag2.alter >> eintrag2.tele; cout <<"Name:"<< eintrag2.name <<endl; cout <<"Nachname:"<< eintrag2.nachna <<endl; cout <<"Alter:"<< eintrag2.alter << endl; cout <<"Telefonnummer:"<< eintrag2.tele << endl; dat_ein.close(); fflush(stdin); getchar(); return 0; } }; class finde_name : public unary_function <bool,eintrag> { public: finde_name(const string& vn):m_vn(vn){} bool operator()(const eintrag& e) {return e.name==m_vn;} private: string m_vn; }; int main() { string sw , hallo ; eintrag ein1; while (sw != "/exit") { cout <<"Main Menue"<<endl ; cout <<"Verwendete Datenbankdatei:"<< dateiname << endl; cout <<"\"\\n\" = Neuer Eintrag ,\"\\l\" = Lesen , \"\\exit\" = Beenden) " << endl; cin >> sw; if (sw == "\\n") { ein1.neu(); } else if (sw == "\\l") {void finde_name(); vector<eintrag>::iterator pos=find_if(Werte.begin(),Werte.end(),finde_name("Hightaker")); if(pos!=Werte.end()) cout<<"gefunden:"<<pos->name<<" "<<pos->nachna<<endl; else cout<<"nicht gefunden."<<endl; while(fin) { eintrag wert; fin>>wert.name>>wert.nachna>>wert.alter>>wert.telefon; if(fin) Werte.push_back(wert); } //ein1.lesen(); } else {cout << "Programm wird beendet!" << endl; Sleep (1000); } } return 0; }
-
Hightaker schrieb:

Ich hab meinen Quelltext noch ein bischen verändert und alles so gemacht wie du gesagt hast aber es geht trotzdem nich !!!Was funktioniert nicht?
Compilier Error?
Wo stürzt es ab?wir brauchen ein paar infos. Wenn ich den code compiliere krieg ich die fehlermeldung:
98 C:\Dev-Cpp\main9.cpp `vector' undeclared (first use this function)für vectoren kenn ich mich nicht aus, muss man wahrscheinlich noch was includieren.
Das hab ich mir dann gedacht und einfach mal #include<vector> geschrieben. Herrauskam folgendes:99 C:\Dev-Cpp\main9.cpp `Werte' undeclared (first use this function)Und das ist kein Wunder, denn du hast etwas vergessen zu kopieren.
Korrigiere den Code und melde dich dann nochmal.
mfg.