Direkt zum Inhalt
www.olaf-groeger.de

Hauptnavigation

  • Startseite
  • NMR
  • Programmieren
    • Streams
    • Subclassing von Edit-Controls
  • Software
    • Calimah Scheduler
    • ServicesCtl

Pfadnavigation

  1. Startseite
  2. Programmieren
  3. Streams
  4. Wiederverwenden von String-Streams
  5. Wie Füllt Man Einen Istringstream Wieder Auf?

Wie füllt man einen istringstream wieder auf?

Von olaf , 3 August 2025

Dafür steht die Funktion istringstream::str(std::string&) zur Verfügung. Man muss jedoch den Zustand des String-Streams beachten.

Beispiel:
  std::string sstr1("1.0 2");
  std::string sstr2("1.0 2");
  int i;
  double d;

  std::istringstream ist(sstr1);
  ist >> d;
  // Zustand : d = 1.0; sstr1 = " 2"

  ist.str(sstr2);
  // okay, Zustand: ist = "1.0 2"

  ist >> d >> i;
  // Zustand: d = 1.0, i = 2, ist =""

  ist.str(sstr1);
  // das ging schief, Zustand: ist = ""

Die letzte Initialisierung schlug fehl. Der Grund dafür liegt darin, dass sich der Stream seinen Zustand merkt und in verschiedenen Zustandsbits sichert. Der Zustand kann man mit den Funktionen good(), eof(), fail() und bad() abfragen. Ein Stream, dessen Zustand nicht good ist, ignoriert jede weitere Aktion. Das ist im obigen Fall eingetreten, da der Stream nach der Extraktion seines letzten Zeichens leer war. Um den Stream wieder in den Zustand good zu versetzen und weitere Aktionen durchführen zu können, muss die Funktion clear() aufgerufen werden. Damit erweitert sich das Beispiel zu:

  std::string sstr1("1.0 2");
  std::string sstr2("1.0 2");
  int i;
  double d;

  std::istringstream ist(sstr1);
  ist >> d;
  // Zustand : d = 1.0; sstr1 = " 2"

  // Falls Zustand nicht good, clear()
  if (!ist.good())
    ist.clear();
  ist.str(sstr2);
  // okay, Zustand: ist = "1.0 2"

  ist >> d >> i;
  // Zustand: d = 1.0, i = 2, ist =""

  // oder sofort clear()
  ist.clear();
  ist.str(sstr1);
  // Zustand : ist = "1.0 2"

Links für das Blättern im Buch 3

  • Wiederverwenden von String-Streams
  • Nach oben
  • Wie leert man einen ostringstream?

Language switcher

  • English
  • German
Unterstützt von Drupal