Hallo zusammen!
Bei einem C++-Programm (Linux) kommt es zweimal vor, dass entweder der Benutzer etwas eingibt oder ich etwas aus einem Textfile lese.
Zur Benutzereingabe:
Ich weiss die länge der Eingabe nicht (nur ungefähr, also 10<eingabe<100 und ich weiss nicht, aus wievielen Wörtern sie besteht. Sie kann zum Beispiel so aussehen:
Bis jetzt hab ich das so gelöst:
Das Problem ist nun, dass alles in einem String ist und ich nicht die einzelenen Wörter habe.
Frage 1:
Gibt es eine (einfache) Möglichkeit, einen String in soviele Strings zu zerlegen wie es Wörter im String hat?
Ich hab da mal sowas ausprobiert:
Ist ne ziemliche Holzfäller Methode und funktioniert auch nicht, weil wort1 nur temporär? gefüllt wird. Das heisst unten, bei den 2 cout kommt nichts raus 
Zur Frage 2:
Ich habe ein Textfile:
Diese Linien hab ich bis jetzt so eingelesen:
Bei XXX muss noch etwas reinkommen, dass den String line, der aus zwei Wörtern besteht, in zwei Strings mit je einem Wort schneidet.
Das Prinzip ist also oben und unten eingentlich das gleiche, ich hoffe ihr habt mir einen oder zwei Tipps
Danke!
Bei einem C++-Programm (Linux) kommt es zweimal vor, dass entweder der Benutzer etwas eingibt oder ich etwas aus einem Textfile lese.
Zur Benutzereingabe:
Ich weiss die länge der Eingabe nicht (nur ungefähr, also 10<eingabe<100 und ich weiss nicht, aus wievielen Wörtern sie besteht. Sie kann zum Beispiel so aussehen:
Es sind also 3 Wörter, un im besten Fall hätte ich die alle in einzelnen Strings mit denen ich dann weiter arbeiten kann.update library now
Bis jetzt hab ich das so gelöst:
Code:
string eingabe;
cout << "Eingabe: ";
getline(cin, eingabe);
return 0;
Frage 1:
Gibt es eine (einfache) Möglichkeit, einen String in soviele Strings zu zerlegen wie es Wörter im String hat?
Ich hab da mal sowas ausprobiert:
Code:
string befehl="hallo welt";
int stringanfang=0;
int stringende=0;
string wort1;
string wort2;
for (int i=0; i < 20; i++)
{
if (befehl[i] == 32)
{
stringende = (i-1);
stringanfang = (i+1);
for (int i=0; i<(stringanfang-1); i++)
{
wort1[i] = befehl[i];
cout << ""<<wort1;
}
for (int i=(stringende+2); i<(stringanfang + 10); i++)
{
wort2[i] = befehl[i];
}
break;
}
}
cout << ""<<wort1;
cout << ""<<wort2;
}
Zur Frage 2:
Ich habe ein Textfile:
Der Aufbau ist immer so, die Namen können aber unterschiedlich sein. D.h. statt befehl1 könnte es auch update heissen.befehl1 skript1
befehl2 skript2
befehl3 skript3
Diese Linien hab ich bis jetzt so eingelesen:
Code:
ifstream scripts ("scripts");
if (scripts.is_open())
{
int i = 0;
while (! scripts.eof() ) //while script hat ende nicht erreicht
{
getline (scripts,line);
XXX
}
Das Prinzip ist also oben und unten eingentlich das gleiche, ich hoffe ihr habt mir einen oder zwei Tipps
Danke!