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:
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 }
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!