Heim > Backend-Entwicklung > C++ > Hauptteil

Wie löscht und setzt man einen StringStream in C ordnungsgemäß zurück?

Patricia Arquette
Freigeben: 2024-11-04 09:17:02
Original
390 Leute haben es durchsucht

How Do You Properly Clear and Reset a StringStream in C  ?

StringStream löschen und zurücksetzen

In C ist ein Stringstream ein Eingabe-/Ausgabepuffer, der einem String-Objekt zugeordnet ist. Es ermöglicht die Manipulation von Zeichenfolgen mithilfe von Stream-Operationen.

Problemstellung:

Beachten Sie den folgenden Code:

<code class="cpp">stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); // Attempt to reset parser

parser << 6; // Doesn't put 6 into parser
short bottom = 0;
parser >> bottom;</code>
Nach dem Login kopieren

Das Problem tritt beim Versuch auf um den Stringstream wiederzuverwenden, nachdem sein Inhalt mit parser.str("") gelöscht wurde.

Lösung:

Um einen Stringstream ordnungsgemäß zu löschen, müssen Sie zwei Schritte ausführen:

  1. Setzen Sie die zugrunde liegende Zeichenfolge mit parser.str(std::string()) auf eine leere Zeichenfolge zurück.
  2. Löschen Sie alle Fail- und Eof-Flags mit parser.clear().
<code class="cpp">parser.str( std::string() );
parser.clear();</code>
Nach dem Login kopieren

Erklärung:

Das erste >> Die Operation liest die Ganzzahl 5 aus dem Stringstream und setzt das EOF-Bit, da das Ende des Strings erreicht wurde. Der anschließende Versuch, 6 zu lesen, schlägt fehl, da das EOF-Bit noch gesetzt ist. Indem Sie die zugrunde liegende Zeichenfolge zurücksetzen und die Flags löschen, stellen Sie die ursprüngliche Konfiguration des Streams wieder her und ermöglichen den Erfolg nachfolgender Vorgänge.

Das obige ist der detaillierte Inhalt vonWie löscht und setzt man einen StringStream in C ordnungsgemäß zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage