Löschen Sie Stringstream in C++
-
Verwenden Sie die Methoden
str("")
undclear()
, umstringstream
in C++ zu löschen -
Verwenden Sie Scoping, um
stringstream
in C++ zu löschen
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.