strtok
-
Gibt es in C++ jetzt eigentlich wircklich keinen direkten Weg in der Standard Bibliothek einen String in seine Tokens zu zerlegen?
Ich hab mir eine Hilfslösung mit strstream gebastelt:
string s; strstream ss; getline(cin, s); strstream<<s; while("noch was im strstream") { strstream>>s; /* tue was */ }
Ich weiß jetzt nur nich, wie ich überprüfen kann, ob in einem strstream noch was drin steht oder nicht.
-
Du musst es nicht in C++ lösen.
Nimm halt C
(Wahrscheinlich werde ich dafür gesteinigt)#include <stdio.h> #include <string.h> void main(void) { char string[] = "Ein Teststring mit mehreren Worten\n" "und mehreren Zeilen. Ende\n"; int i=1; char *ptr; ptr = strtok(string, "\n "); while(ptr != NULL) { printf("% d. Wort: %s\n",i++,ptr); ptr = strtok(NULL, "\n "); } }
Anhand deiner Überschrift zu urteilen wusstest du das aber wohl schon.
-
probiere es mal damit:
string s1; strstream ss; //wie wäre es mit anderen Namen für die Variablen?! getline(cin, s1); ss<<s1; while( ss.good() ){ /* tue was */ ss>>s1; cout<<s1<<endl; }
-
Nimm halt C
(Wahrscheinlich werde ich dafür gesteinigt)jo, vorallem wenn du auch noch falsches C schreibst
-
Dann wirst du mir auch sicher sagen können was daran falsches C ist.
-
void main z.B. ...
-
Ich könnte mich irren aber in C absolut legitim
-
Hi!
Darkfalcon schrieb:
Ich könnte mich irren aber in C absolut legitim
Nein, in C89 und auch C99 heißt es "int main()" und in C89 muss das Programm mit einem return beendet werden.
Code-Hacker
-
Selbst wenn, denke ich nicht das man vom falschen C sprechen kann.
-
Stimmt! Man könnte auch von richtigem C mit Fehlern sprechen
Oder richtigem C mit Einschränkungen!Nichtsdestotrotz ist hier die C++ Lösung wohl die eindeutig schönere.
-
Ich sehe hier keine C++ Lösung. Jede genannte, C++-nutzende Lösung leistet nicht das, was strtok leistet. Was ist, wenn das Trennzeichen kein ' ' ist sondern z.B. ein ':'?
Da würde ich doch gerne eine entsprechende Lösung sehen.
__
Grüße, DennisB
-