Strings teilen und in array speichern...
-
WIeso funktioniert der Code nicht:
int main(int argc, char* argv[]) { string str; string array[10]; getline(cin,str); int i=0; int pos=0; int temp=0; while((pos=str.find(' ',temp))!=string::npos) { string sub=str.substr(temp,pos); array[i]=sub; temp=pos; ++i; } cout<<array[0]<<endl; cout<<array[1]<<endl; cout<<array[2]<<endl; getch(); return 0; }
Wenn ich:
"Wie gehtz"
dann gibt er aus:
"Wie
ge
ge"hm....
-
Was isn string::npos?
-
the_alien schrieb:
Was isn string::npos?
größtmöglicher positionswert, hat also die bedeutung, das das gesuchte nicht im text enthalten ist!
-
Ich habs mal bei mir laufen lassen. Ich finds interessant, dass kein Überlauf im Array zustande kommt, denn er findet die einzige Leerstelle im Text in jedem Durchlauf der Schleife.
Wenn dutemp = pos+1;
machst, dann sucht er nach der nächsten Leerstelle, weil er hinter der ersten (vorherigen) anfängt zu suchen. Allerdings müsstest du dich dann noch um den Rest des Strings kümmern. Also von der letzten Leerstelle bis zum \n oder \0
-
hmm...da kommt noch mehr quatsch raus.....
-
Ich lese mal deine Gedanken um zu eraten was dieser "quatsch" ist...
*konzentrier*"Deine Gedanken wohl verbergen du kannst junger Jedi"
-
the_alien schrieb:
Ich lese mal deine Gedanken um zu eraten was dieser "quatsch" ist...
*konzentrier*"Deine Gedanken wohl verbergen du kannst junger Jedi"
lol dieser quatsch ist sicher, das er im array[0] ein wort hat,
und in array[1++] dann immer irgendwelche satzteile....wetten?
-
machst du lieber so:
#include <iostream> #include <iterator> #include <algorithm> #include <vector> #include <string> using namespace std; int split(const string& input, const string& delimiter, vector<string> &result) { size_t posStart=0, posEnd; size_t length = input.length(); int nCount=0; while( (posEnd = input.find(delimiter,posStart)) != input.npos ) { if( (posEnd-posStart)>0 ) { result.push_back(input.substr(posStart,posEnd-posStart)); ++nCount; } posStart = posEnd+1; } if( (length-posStart)>0 ) { result.push_back(input.substr(posStart,length-posStart)); ++nCount; } return nCount; } int main() { string s = " wie geht dem "; vector<string> test; cout << split(s," ",test) << " Elemente in den vector geschrieben:" << endl; copy(test.begin(),test.end(),ostream_iterator<string>(cout,"\n")); cin.get(); }