Wörter aus .txt in vector lesen
-
Guten Tag,
ich versuche gerade Wörter Zeilenweise in einen vector zu lesen. leider habe ich dabei ein Problem bei dem ich nicht weiter komme. Erstmal mein Code:#include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main() { int cnt = 0; int wordCounter = 0; string txtFile; vector<string> words; vector<string> lines; ifstream myfile ("example.txt"); //Wenn sich der File oeffnen laesst bzw existiert dann: if (myfile.is_open()) { while ( myfile.good() ) { //Linien in Vector lines speichern getline (myfile,txtFile); lines.push_back(txtFile); } //Alle Linien auslesen int i; for(i = 0; i<lines.size(); i++) cout<<lines[i]<<endl; //File schliessen myfile.close(); //Wörter einseln auslesen und in Vector schreiben for(int j = 0; j < lines.size(); j++) { string tmpLinie = lines[j]; for (int i = 0 ; i < tmpLinie.length();i++) { if (tmpLinie[i] == ' ') { string tmp2; tmp2 = tmpLinie.substr(cnt,i-cnt); words[wordCounter].push_back(tmp2); cnt = i+1; } wordCounter = wordCounter + 1; } } } else cout << "Unable to open file"; cin.sync(); cin.get(); return 0; }Mein fehler liegt bei
words[wordCounter].push_back(tmp2);Da sagt er mir, das keine Konvertierung von String nach Char möglich ist.
Aber das ist doch ein String
Steh hier bisschen auf der Leitung habe mit dem Thema noch nicht so viel gemacht. Könnte mir eventuell jemand helfen? Oder gibt es eine einfachere Möglichkeit?
-
Du willst einzelne Wörter lesen, verstehe ich das richtig?
Mache doch einfach:while (file) { std::string tmp; file >> tmp; words.push_back(tmp); }Dann hast du alle Wörter.
-
Danke, das geht... und ich mach daran schon so lange rum

-
IceDragon schrieb:
Mein fehler liegt bei
words[wordCounter].push_back(tmp2);Da sagt er mir, das keine Konvertierung von String nach Char möglich ist.
Aber das ist doch ein String
words[wordCounter]ist in der Tat einstd::string&.
D.h. Du rufst strings Memberstd::string::push_back(char)auf.
Allerdings ist Dein Argument keinchar, sondern einstd::string, nämlichtmp2.
-
Nathan schrieb:
Du willst einzelne Wörter lesen, verstehe ich das richtig?
Mache doch einfach:while (file) { std::string tmp; file >> tmp; words.push_back(tmp); }Dann hast du alle Wörter.
Und sogar als Bonus noch eines, das gar nicht da war.
-
SeppJ schrieb:
Nathan schrieb:
Du willst einzelne Wörter lesen, verstehe ich das richtig?
Mache doch einfach:while (file) { std::string tmp; file >> tmp; words.push_back(tmp); }Dann hast du alle Wörter.
Und sogar als Bonus noch eines, das gar nicht da war.

@Nathan: Du solltest nach einem Lesevorgang auch testen, ob der Lesevorgang erfolgreich war, bevor du den String verarbeitest.
-
Oh, äh, hehe...

Ähm, ja das sollte man vielleicht tun.