Heim >Backend-Entwicklung >C++ >Warum haften einige C iomanip-Manipulatoren, während andere, wie „std::setw()', dies nicht tun?

Warum haften einige C iomanip-Manipulatoren, während andere, wie „std::setw()', dies nicht tun?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 18:02:15828Durchsuche

Why Are Some C   iomanip Manipulators Sticky While Others, Like `std::setw()`, Are Not?

Sticky Iomanip-Manipulatoren

In C sind Iomanip-Manipulatoren Stream-Modifikatoren, die verwendet werden, um das Verhalten oder Format von Eingabe- und Ausgabestreams zu ändern. Allerdings verhalten sich nicht alle Manipulatoren gleich; Einige sind temporär und wirken sich nur auf die nächste Einfügung aus, während andere „klebrig“ sind und so lange in Kraft bleiben, bis sie explizit geändert werden.

Warum ist std::setw() nicht klebrig?

Im Gegensatz zu den meisten anderen Manipulatoren ändert std::setw() den Status des Streams nicht dauerhaft. Dies liegt daran, dass es sich um einen Formatierungsmanipulator handelt, bei dem jede Einfügung für eine ordnungsgemäße Ausrichtung eine explizite Angabe der Breite erfordert. Standardmäßig wird es nach jedem Einfügen auf Null zurückgesetzt, um Mehrdeutigkeiten zu vermeiden und die Kontrolle über die Formatierung zu behalten.

Sticky Manipulatoren

Die folgenden Manipulatoren sind Sticky, was bedeutet, dass sie wirksam bleiben bis sie von einem anderen Manipulator oder explizit geändert werden reset:

  • std::setiosflags
  • std::resetiosflags
  • std::setbase
  • std::setfill
  • std::setprecision
  • Alle Flag-Änderungen Manipulatoren (z. B. std::boolalpha, std::showbase)
  • Alle Formatierungsmanipulatoren (z. B. std::fixed, std::internal)
  • Alle Stream-Statusmodifikatoren (z. B. std ::ws, std::endl)

std::ios_base::width() vs. std::setw()

std::ios_base::width () ist eine Mitgliedsfunktion von std::ios_base, der Basisklasse aller Stream-Typen. Es gibt die aktuelle Breite des Feldes zurück. Es steuert jedoch nicht direkt die Feldbreite; std::setw() muss verwendet werden, um die Feldbreite festzulegen.

Online-Referenz

Eine umfassende Liste der iomanip-Manipulatoren und finden Sie in der Dokumentation der C-Standardbibliothek ihr Verhalten. Es enthält detaillierte Beschreibungen und Beispiele ihrer Funktionalität. Alternativ bieten Online-Ressourcen wie die cppreference-Website ausführliche Informationen zu Manipulatoren, einschließlich ihrer klebrigen Natur.

Das obige ist der detaillierte Inhalt vonWarum haften einige C iomanip-Manipulatoren, während andere, wie „std::setw()', dies nicht tun?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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