Löschen Sie Stringstream in C++

Suraj P 12 Oktober 2023
  1. Verwenden Sie die Methoden str("") und clear(), um stringstream in C++ zu löschen
  2. Verwenden Sie Scoping, um stringstream in C++ zu löschen
Löschen Sie Stringstream in C++

Dieser Artikel wird verschiedene Möglichkeiten zum Löschen oder Leeren von stringstreams in C++ lehren.

Verwenden Sie die Methoden str("") und clear(), um stringstream in C++ zu löschen

Um stringstream zu löschen oder zu leeren, können wir die Methoden str("") und clear() verwenden, aber wir müssen beide Methoden verwenden; andernfalls funktioniert das Programm möglicherweise nicht richtig, d. h. es gibt nicht die richtige Ausgabe.

Beispielcode (nur mit str("")):

#include <bits/stdc++.h>
using namespace std;

int main() {
  string temp;

  string temp2;

  stringstream ss;

  for (int i = 0; i < 5; i++)

  {
    ss.str("");
    ss << i;
    temp = ss.str();
    ss >> temp2;
    cout << temp << " " << ss.str() << " " << temp2 << endl;
  }
}

Ausgang:

0 0 0
  0
  0
  0
  0

Die obige Ausgabe ist nicht korrekt, da die Verwendung von ss.str("") die Zeichenfolge löscht, aber das Problem ist, dass wir dem Stream keine neuen Werte hinzufügen können.

Deshalb erhalten wir in der ersten Zeile die korrekte Ausgabe 0 0 0, aber in der nächsten Iteration werden beide Strings temp und temp2 leer, da dem Stream keine neuen Werte hinzugefügt werden. Es ist also so, als würde man beiden eine leere Zeichenkette zuweisen.

Beispielcode (bei gemeinsamer Verwendung von str("") und clear()):

Die Funktion clear() setzt den Fehlerzustand des Streams zurück. Immer wenn ein Fehler im Stream auftritt, wird der Fehlerstatus auf eofbit (Dateiende) gesetzt, und mit clear() können wir ihn auf goodbit zurücksetzen und sagen, dass kein Fehler vorliegt.

#include <bits/stdc++.h>
using namespace std;

int main() {
  string temp;

  string temp2;

  stringstream ss;

  for (int i = 0; i < 5; i++)

  {
    ss.clear();
    ss.str("");
    ss << i;
    temp = ss.str();
    ss >> temp2;
    cout << temp << " " << ss.str() << " " << temp2 << endl;
  }
}

Ausgang:

0 0 0
1 1 1
2 2 2
3 3 3
4 4 4

Erläuterung: Hier erhalten wir die korrekte Ausgabe, da die Verwendung von clear() zusammen mit str("") es uns ermöglicht, dem Stream nach dem Löschen neue Werte hinzuzufügen.

Verwenden Sie Scoping, um stringstream in C++ zu löschen

Obwohl dies als erste Methode unwirksam ist, ist dies eine Problemumgehung, um den stringstream zu löschen. Wir können das Konzept des Scoping verwenden.

Beispielcode:

#include <bits/stdc++.h>
using namespace std;

int main() {
  {
    stringstream ss;
    ss << "our code part ";
    cout << ss.str() << endl;
  }

  {
    stringstream ss;
    ss << "Tony ";
    cout << ss.str() << endl;
  }

  {
    stringstream ss;
    ss << "stark ";
    cout << ss.str() << endl;
  }
}

Ausgang:

our code part
Tony
stark

Erläuterung: Hier müssen wir geschweifte Klammern { } verwenden, um den Gültigkeitsbereich dieser stringstream-Variablen zu definieren. Sobald es den Geltungsbereich verlässt, wird es gelöscht.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub