Archivierung und Abruf BITTE um Hilfe
-
Also, das beispiel, was ich oben schrieb ist enorm gekürzt. Das Orginal x-fach so groß, aber darum geht es nicht.
Was ich gerne machen würde:ich gebe einen Begriff ein. Geht
Es wird überprüft ob das Wort schon vorhanden ist. Geht
Wenn ja wird überprüft ob eine dazugehörige Definition vorhanden ist. Geht nicht
Falls das Wort nicht vorhanden ist, soll gefragt werden ob Nomen oder Namen, dann soll nach einer Definition gefragt werden. Geht
Diese Wörter sollen unter der Gruppe Nomen oder Namen, was halt definitert wurde, gespeichert werden.Dann soll, wenn ich ein Wort eingebe die dazugehörige Definition ausgegeben werden. Geht nicht

Die Variabeln sind nur dazu da, damit ich einen übersichtlichenEinblick habe.
Und das alles zusammenzuhängen klappt nicht! Deshalb wär super freundlich für Hilfe,
danke im Vorraus
-
Du bist ja hier bei C++.
Wenn dein Quelltext x-mal so groß ist, hast du schon mal an Container gedacht
Vermute nicht, da du so auf goto stehst.
Du beschreibst dein Programm so als wolltest du ein Lexikon erstellen.
Der Quelltext sieht eher nach einem Sammelautomaten für eine Kundendatei aus.
Schon einen Plan, wenn sich mehrere Karl Mayer oder Sepp Müller melden

-
Wie sähe das mit nem Container denn aus?
std::find, std::search?
Aber wie krieg ich die Verknüpfung der Worte hin, also der Nomen/Name PLUS Definition, und dass beides gesucht wird? Und er ausgibt? Also wenn ich ein Nomen/Namen eingebe, er mir die Definition ausgibt?
-
Es gibt den einfach assoziativen Container
std::map. Du musst jeweils für den Schlüssel und den Wert einen Typ angeben, bei dir sollte das in beiden Fällen einstd::stringsein, alsostd::map<std::string, std::string>. Benutzbar ist das dann so:#include <map> #include <string> #include <iostream> int main() { std::map<std::string, std::string> MyDict; MyDict["Name"] = "Definition von Name"; // oder MyDict.insert( std::make_pair( "Nomen", "Definition von Nomen" ) ); // hässlich, hab aber kein C++11 std::map<std::string, std::string>::const_iterator i = MyDict.find( "Name" ); if( i != MyDict.end() ) { std::cout << "Definition von " << i->first << ": " << i->second << std::endl; } else { std::cout << i->first << " ist nicht definiert." << std::endl; } }Das Suchen funktioniert natürlich nur nach Schlüsseln, wenn du nach weiteren Kriterien suchen willst musst du dir wohl was eigenes basteln (siehe boost::multi_index_container).
Wenn du andere Zuordnungen brauchst (Name -> irgendwas) musst du natürlich den Wertetyp entsprechend ändern.
-
Sieht sehr gut aus, danke. Nur schaffe ich es irgendwie nicht die Daten abzuspeichern. Was muss ich daran ändern um abzuspeichern?
-
Vielleicht solltest du erst ein Mal das hier lesen...
-
DocShoe schrieb:
Vielleicht solltest du erst ein Mal das hier lesen...
Das wurde ihm bereits 8x verlinkt. Aber irgendwie schafft er es trotzdem noch, irgendwie Leute zu finden, die ihm helfen.
-
Ich hab nun ne eigene Möglichkeit, Wörter abzurufen:
Meine Frage dazu wäre:#include <iostream> #include <fstream> #include <sstream> using namespace std; int main() { ifstream fin("example.txt"); string line; while (getline(fin, line)) { istringstream tokenizer(line); string token; getline(tokenizer, token, ','); cout << token << endl; getline(tokenizer, token, ','); istringstream int_iss(token); cout << token << endl; }Wenn ich das Programm ausführe zeigt er mir den kompletten Inhalt an. Ich möchte es aber nur auf eine Zeile beschränken, dass er mir nicht den kompletten Inhalt anzeigt, sondern nur die eine Zeile, nach der ich suchte.
Wie kriege ich das genau hin?
Danke im Vorraus
-
boah, gtfo pls
-
Was heißt
gtfo pls????
Ich habe nur diese einzige Frage:
Ich hab nun ne eigene Möglichkeit, Wörter abzurufen:
Meine Frage dazu wäre:#include <iostream> #include <fstream> #include <sstream> using namespace std; int main() { ifstream fin("example.txt"); string line; while (getline(fin, line)) { istringstream tokenizer(line); string token; getline(tokenizer, token, ','); cout << token << endl; getline(tokenizer, token, ','); istringstream int_iss(token); cout << token << endl; }Wenn ich das Programm ausführe zeigt er mir den kompletten Inhalt an. Ich möchte es aber nur auf eine Zeile beschränken, dass er mir nicht den kompletten Inhalt anzeigt, sondern nur die eine Zeile, nach der ich suchte.
Wie kriege ich das genau hin?
Danke im v******
-
get the fu.ck out, soweit helfe ich dir noch...
edit:
please