Heim > Backend-Entwicklung > C++ > Wie kann man Ostringstreams wiederverwenden?

Wie kann man Ostringstreams wiederverwenden?

Linda Hamilton
Freigeben: 2024-10-24 04:34:02
Original
981 Leute haben es durchsucht

How to Reuse ostringstreams?

Wie kann man Ostringstream wiederverwenden?

Um zu vermeiden, dass Anwendungen häufig Speicher zuweisen, möchten Sie möglicherweise ostringstream (und den zugrunde liegenden Puffer) löschen und wiederverwenden. Um ein Objekt in seinen Ausgangszustand zurückzusetzen, führen Sie die folgenden Schritte aus:

Verwenden von „clear“ und „str“

In der Vergangenheit wurden hierfür Sequenzen aus „clear“ und „str“ verwendet:

<code class="cpp">// 清除,因为 eof 或其他位可能仍然设置。
s.clear();
s.str("");</code>
Nach dem Login kopieren

Dies funktioniert sowohl für Eingabe- als auch für Ausgabe-Stringstreams.

Manuell löschen und suchen

Alternativ können Sie manuell löschen und dann mit der entsprechenden Sequenzsuche beginnen:

<code class="cpp">s.clear();
s.seekp(0); // 对于输出:将放置指针指向开头
s.seekg(0); // 对于输入:将获取指针指向开头</code>
Nach dem Login kopieren

Dadurch wird Str. verhindert Führen Sie eine Neuzuweisung durch und überschreiben Sie stattdessen alles, was sich derzeit im Ausgabepuffer befindet. Das Ergebnis ist wie folgt:

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b";
assert(s.str() == "bello");</code>
Nach dem Login kopieren

Für C-Funktionen verwenden Sie std::ends

Wenn Sie diese Zeichenfolge für C-Funktionen verwenden möchten, können Sie dies tun Verwenden Sie std::ends und setzen Sie eine abschließende Null wie folgt:

<code class="cpp">std::ostringstream s;
s << "hello";
s.seekp(0);
s << "b" << std::ends;
assert(s.str().size() == 5 && std::strlen(s.str().data()) == 1);</code>
Nach dem Login kopieren

std::ends ist ein Überbleibsel des veralteten std::strstream, das direkt auf das schreiben kann, worauf Sie es zugewiesen haben das Stack-Char-Array. Sie müssen manuell eine abschließende Null einfügen. Allerdings ist std::ends meiner Meinung nach nicht veraltet, da es in der oben genannten Situation immer noch nützlich ist.

Das obige ist der detaillierte Inhalt vonWie kann man Ostringstreams wiederverwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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