S
Stratege993 schrieb:
Ich bin sher neu bei dem Qulletext sagt C++ aber das er nicht std kennt. Muss ich noch irgendwas machen? Vieleicht irgenwas includen?
Ist bistimmt eine blöde frage,würde aber gerne eine Antwort haben.
Hi,
ja sorry, musste gerade dringend weg.
Hier eine getestete Version (ohne "eye candy"):
#include <string>
using std::string;
#include <vector>
using std::vector;
#include <sstream>
using std::istringstream;
#include <iostream>
using std::cout;
using std::size_t;
int main (int argc, char **argv)
{
string s = "Vorname Nachname Telefon Alter Ort ";
istringstream in(s);
vector<string> Teile(5); // 5 Plätze vorreservieren
// solange auslesen, bis wir 5 haben oder das Einlesen fehlschlägt
for(size_t i=0; i<5 && (in >> Teile[i]); ++i);
// Ausgeben
for(size_t i=0; i<Teile.size(); ++i) cout << i << ". String " << Teile[i] << "\n";
return 0;
}
... und noch eine "eye candy"-Variante:
#include <string>
using std::string;
#include <vector>
using std::vector;
#include <sstream>
using std::istringstream;
#include <iostream>
using std::cout;
#include <algorithm>
using std::copy;
#include <iterator>
using std::ostream_iterator;
using std::istream_iterator;
using std::size_t;
int main (int argc, char **argv)
{
string s = "Vorname Nachname Telefon Alter Ort ";
istringstream in(s);
vector<string> Teile;
// Einlesen in Teile:
copy(istream_iterator<string>(in), istream_iterator<string>(), back_inserter(Teile));
// Ausgabe nach cout
copy(Teile.begin(), Teile.end(), ostream_iterator<string>(cout, " "));
return 0;
}
Mit dem "iteratoren-Gedöns" sagt man dem Compiler, dass man aus einem Stream oder Container "Stück-für-Stück" Inhalte auslesen will und back_inserter "weiß", wie man an einen Container ein weiteres Element anhängt....
Aber um das lesen zu können, braucht man schon einiges an C++-Erfahrung...
aber EIN Vorteil der zweiten Variante ist, dass man nirgends das Wissen braucht, wie viele "Tokens" im String s stecken. Er ist also flexibler und robuster.
Gruß,
Simon2.