Stringstreams effektiv zurücksetzen
Wenn Sie versuchen, einen Stringstream zu löschen, um ihn für die weitere Eingabe und Extraktion wiederzuverwenden, ist es wichtig, die entsprechenden Techniken anzuwenden Den Stream vollständig zurücksetzen. Betrachten Sie das folgende Beispiel:
stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempting to reset the parser parser << 6; // Input value ignored short bottom = 0; parser >> bottom;
In diesem Szenario wird der Stream durch den Versuch, den Stringstream durch Zuweisen eines leeren Strings zu seinem Str-Mitglied zurückzusetzen, nicht vollständig gelöscht. Infolgedessen wird der nachfolgende Eingabewert von 6 ignoriert und der zweite Extraktionsvorgang schlägt fehl.
Um einen Stringstream effektiv zurückzusetzen, ist es notwendig, str nicht nur einen leeren String zuzuweisen, sondern auch alle verbleibenden Fehler und zu löschen eof-Flaggen. Dies kann mit der Clear-Methode erreicht werden:
parser.str(std::string()); parser.clear();
Durch die Ausführung dieser beiden Aktionen wird der Stringstream vollständig zurückgesetzt und ist zur Wiederverwendung bereit, da die zugrunde liegende Sequenz geleert und alle Flags gelöscht werden. Wenn beide Schritte nicht ausgeführt werden, kann es zu unerwartetem Verhalten kommen, z. B. dass der Stream im Status „Ende der Datei“ verbleibt, was dazu führt, dass nachfolgende Vorgänge fehlschlagen.
Das obige ist der detaillierte Inhalt vonWie kann man einen Stringstream effektiv zurücksetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!