string in array
-
Ich habe eine LoadFile2Str Funktion benutzt um eine komplette Textdatei in einen String einzulesen.
Danach habe ich diese String nach jedem Leerzeichen, jedem Punkt und jedem Zeilenumbruch aufteilen lassen.Aus:
Dies ist die 1. Zeile der Datei In.txtwird:
Wort 1 : Dies
Wort 2 : ist
Wort 3 : die
Wort 4 : 1
Wort 5 : Zeile
Wort 6 : der
Wort 7 : Datei
Wort 8 : In
Wort 9 : txtDas ganze schaut so aus:
#include <cstdlib> #include <iostream.h> #include <stdio.h> #include <string.h> #include <windows.h> using namespace std; char trenner[]=" .\n"; . . //hier steht die Funktion LoadFile2Str . int main( void ) //Dies ist die Funktion, die den String Buffer aufteilt { char *einzelwort; int i=0; LPSTR Buffer; Buffer = LoadFile2Str("In.txt"); // lädt die Datei In.txt cout<<Buffer<<endl<<endl; einzelwort = strtok( Buffer , trenner ); while( einzelwort != NULL ) { printf( "Wort %d : %s\n" , ++i , einzelwort ); einzelwort = strtok( NULL , trenner ); } return(0); }
Hier mein Problem:
Nun möchte ich ein Array anlegen welches die einzelnen Teile enthält.
Bsp: mein_array[0] soll "Dies" enthalten
mein_array[1] soll "ist" enthalten
usw.Sieht also nicht sehr kompliziert aus, aber ich bin ein shclechter Programmierer!
Kann mir bitte jemand hinschreiben was ich wo deklarieren muss und wie die Definition von mein_array aussieht?
Vorab gleich mal Danke!
-
#include <vector> #include <string> ... std::vector<std::string> stringlist; stringlist.push_back("erster eintrag"); stringlist.push_back("2. Eintrag");
Zugriff über [] und size().
Devil
-
Zugriff über [] und size().
verstehe ich leider nicht ganz.
Bsp: cout << "Erstes Element " << stringlist[0] << ""<< endl; soll "Dies" ausgeben.
-
...und stringlist.size() sagt dir wieviele elemente der vector hat.
Devil
-
okay verstanden.
aber was soll
stringlist.push_back("erster eintrag"); stringlist.push_back("2. Eintrag");
bedeuten?
mein ziel ist es, automatisch das erste "einzelwort" in stringlist[0] zu haben, das zweite "einzelwort" in stringliste[1] usw.
sorry, ich tu mir schwer.
-
Genau das macht push_back(). Es hängt hinten an. Das heißt bei Index 0 hast du "Dies" und bei Index 1 dann "ist".
http://www.cppreference.com/cppvector/ <- einfach mal durchlesen.
-
#include <vector> #include <string> #include <iostream> using namespace std; int main() { string text("Dies ist die 1. Zeile der Datei In.txt"); const string delims(" .,;\n\t"); vector<string> teile; string::size_type begIdx, endIdx; begIdx = text.find_first_not_of(delims); while(begIdx != string::npos) { endIdx = text.find_first_of(delims, begIdx); if(endIdx == string::npos) { endIdx = text.length(); } teile.push_back(text.substr(begIdx, endIdx - begIdx)); begIdx = text.find_first_not_of(delims, endIdx); } for(unsigned int i=0; i<teile.size(); ++i) { cout << i+1 << " : " << teile[i] << endl; } cin.get(); return 0; }
Wofür gibt es denn std::string?
-
vielen danke für die antworten, auch wenn ich z.T. wohl schwer von begriff bin
ich habe es entzwischen hingebracht.