string umbauen

Thomasio

Erfahrenes Mitglied
Ich weiss nicht mal, ob ich überhaupt erklären kann, was ich hier vorhabe, evtl macht es gar keinen Sinn, aber vielleicht kann mir jemand folgen und einen Tip geben

Ich habe ein paar Strings alle im gleichen Format, die ich wortweise umstellen will

std::string string1 = "Heini Müller hat heute 10 Fische gefangen";
std::string string2 = "Fritzchen Meier hat gestern 5 Fische gekauft";
std::string string3 = "Harald Schmidt hat vorgestern 20 Witze erzählt";

Worte hat jeder String immer gleich viele, auch der Sinn der Strings entspricht immer diesem Muster
Nun möchte ich die auf Usereingabe so umstellen, dass immer die Auswahl des Users vorne steht

z.B. der User wählt Nachname, dann soll die Ausgabe so aussehen

Müller Heini hat heute 10 Fische gefangen

oder der User wählt Anzahl, dann so

10 Fische hat Heini Müller heute gefangen

Kurz gesagt, ich brauche einen Code, der aus einen String Worte in einer bestimmten Reihenfolge rauspickt und das Ergebnis in einem neuen String zusammenstellt

Kann mir jemand weiter helfen? Mein Anfängerwissen aus Tutorials zum Thema Strings reicht da jedenfalls nicht mehr
 
Servus,

also spontan würd ich ein zwei dimensionales Array erstellen (1. dim für einen Satz, 2. dim für die einzelnen Wörter), und darin die Sätze abspeichern.
Dannach kannst du dann, je nach Usereingabe, den entsprechenden Satz auswählen und die Wörter (Felder im Array), je nach Eingabe, richtig anordnen.

Hab jetzt leider keinen Code, aber das wär mal so ein gedanklicher Ansatz
 
Nachdem ich immer nur einen string auf einmal bearbeiten muss, brauche ich gar kein 2 dimensionales array, es würde mir schon reichen den string wortweise in ein array zu zerlegen auf das ich dann mit array[wort] zugreifen kann

Mein Problem ist, wie zerlege ich einen std::string in ein solches array?
Und wie baue ich nach Auswahl der Reihenfolge daraus wieder einen std::string?
 
Hi.

Den String kannst du mit Hilfe eines std::istringstream wortweise verarbeiten, und mit einem std::ostringstream kannst du wieder einen neuen String zusammenbasteln:
C++:
#include <string>
#include <sstream>
#include <vector>
#include <iostream>

using namespace std;
...
const string str1 = "Harald Schmidt hat vorgestern 20 Witze erzählt";

string word;
istringstream istr(str1);
vector<string> sentence;

while (istr >> word) {
  sentence.push_back(word);
}


if (sentence.size() == 7) {
  ostringstream ostr;

  // z.B. mit Anzahl:
  ostr << sentence[4] << " " << sentence[5] << " " << sentence[2] << " ";
  ostr << sentence[0] << " " << sentence[1] << " " << sentence[3] << " ";
  ostr << sentence[6];
  
  string result = ostr.str();

  cout << result << endl;
}
Gruß
 
Superklasse, ganz herzlichen Dank

Ich glaube ich habe sogar den Sinn dahinter begriffen, vielleicht wird ja doch noch mal ein Coder aus mir?

Das Forum hier (soviel muss ich jetzt mal dazu sagen) ist auf jeden Fall allererste Wahl bei der Suche nach Hilfe und Ergänzungen zu Tutorials
 
Zurück