Heim > Backend-Entwicklung > C++ > Welche C-Stream-Manipulatoren sind Sticky und warum nicht „setw()'?

Welche C-Stream-Manipulatoren sind Sticky und warum nicht „setw()'?

Linda Hamilton
Freigeben: 2024-12-13 04:37:09
Original
965 Leute haben es durchsucht

Which C   Stream Manipulators are Sticky, and Why Isn't `setw()`?

Sticky Manipulatoren in C

In der C-Programmierung werden Manipulatoren verwendet, um die Ausgabeformatierung von Streams zu ändern. Bestimmte Manipulatoren verhalten sich „klebrig“, was bedeutet, dass ihre Effekte bestehen bleiben, bis sie explizit geändert werden.

Warum ist setw() nicht Sticky?

std::setw( ) ist ein Beispiel für einen nicht klebrigen Manipulator. Dies bedeutet, dass es nur Auswirkungen auf den nächsten Einfügevorgang hat. Nachdem setw() verwendet wurde, wird die Breiteneinstellung auf den Standardwert zurückgesetzt.

Sind noch andere Manipulatoren Sticky?

Alle Manipulatoren außer setw() sind Sticky. Das Enthält:

  • setiosflags
  • resetiosflags
  • setbase
  • setfill
  • setprecision
  • setiosflags
  • resetiosflags
  • setbase
  • setfil l
  • setprecision
  • [no]boolalpha
  • [no]showbase
  • [no]showpoint
  • [no]showpos
  • [no]skipws
  • [no]unitbuf
  • [no]uppercase
  • dec/ hex/ okt
  • fest/ wissenschaftlich
  • intern/ links/ rechts
  • ws/ endl/ endet/ bündig

Unterschied zwischen std::ios_base::width() und std::setw()

std::setw() gibt ein Objekt zurück, das einen Breitenwert darstellt. Dieses Objekt kann verwendet werden, um die Breite des nächsten Elements festzulegen, das in einen Stream eingefügt wird.

std::ios_base::width() legt direkt die Breite des Streams fest. Alle nachfolgenden Einfügungen in den Stream werden mit der neuen Breite formatiert.

Online-Referenz

Leider gibt es keine klare Dokumentation, die das Sticky-Verhalten von Manipulatoren explizit angibt. Das Verhalten kann jedoch aus der Dokumentation der C-Standardbibliothek abgeleitet werden.

Beispiel für Sticky-Manipulatoren

Der folgende Code demonstriert das Sticky-Verhalten von Manipulatoren:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
  // Set the precision to 2 decimal places
  cout << setprecision(2);

  // Insert a number
  cout << 3.14 << endl;  // Output: 3.14

  // The precision is still set to 2 decimal places
  cout << 1.2345 << endl; // Output: 1.23
}
Nach dem Login kopieren

Fazit

Klebrige Manipulatoren sind eine nützliche Funktion in C, die dabei helfen kann, die Formatierung der Ausgabe zu steuern. Es ist jedoch wichtig, sich ihres Verhaltens bewusst zu sein, um unerwartete Ergebnisse zu vermeiden.

Das obige ist der detaillierte Inhalt vonWelche C-Stream-Manipulatoren sind Sticky und warum nicht „setw()'?. 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