010
24.04.2006, 20:55 Uhr
Helmut
|
C++: |
#include <iostream> #include <vector> #include <sstream> #include <string> //#include <algorithm> //#define SPACELORD #define POFFELNATOR //#define HELMUT using namespace std;
int gebe_token(const string&, string*, int);
int main() { #ifdef SPACELORD //von ihm kann man lernen vector<string> vec; //#include <algorithm> wird hier nicht gebraucht string s("das ist ein String mit whitespaces"); stringstream sstr(s); istream_iterator<string> in(sstr),end; for(;in != end;++in) vec.push_back(*in); //gefundene Elemente ausgeben copy(vec.begin(),vec.end(),ostream_iterator<string>(cout,"\n")); cout<<endl; #endif/*SPACELORD*/ int token = 0; int index = 0; do{ #ifdef POFFELNATOR //es funktioniert! string satz = "Dies ist ein Test"; string sub[4]; // int schritt = (int)satz.find_first_of(" ",index); sub[token] = satz.substr(index,schritt-index); index = schritt +1; cout << sub[token] << endl; #endif/*POFFELNATOR*/ }while(++token < 4); #ifdef HELMUT //Fehler nur bei mir selbst gefunden #define TOKEN_MAX 100 // nicht string s2[TOKEN_MAX]; // sondern string s2[TOKEN_MAX+1]; //wegen der Bedingung s2[i].size(); //und return (tokenanzahl - 1) string s1= "Jede Menge Token --- Jede Menge Token fast jede Menge Token";
string s2[TOKEN_MAX+1]; for(int i = 0, tokenanzahl = gebe_token(s1, s2, TOKEN_MAX); s2[i].size(); ++i) cout << s2[i] << endl;
#endif/*HELMUT*/ return 0; } int gebe_token(const string& string_in, string* s_out, int token_max) { istringstream ist(string_in); int tokenanzahl = 0; while((ist >> s_out[tokenanzahl++]) && (tokenanzahl < token_max)) ; return (tokenanzahl - 1); }
|
|