std::setw
| Definiert im Header <iomanip> |
||
| /* nicht spezifiziert */ setw( int n ); |
||
Wenn verwendet in einem Ausdruck wie out << std::setw(n) oder in >> std::setw(n), setzt den width Parameter des Streams out oder in auf exakt n.
Einige Operationen setzen die Breite auf Null zurück (siehe unten), daher muss std::setw möglicherweise wiederholt aufgerufen werden, um die Breite für mehrere Operationen einzustellen.
Inhalt |
[bearbeiten] Parameter
| n | - | neuer Wert für die Breite |
[bearbeiten] Rückgabewert
Ein Objekt eines nicht spezifizierten Typs, so dass
- wenn out ein Objekt vom Typ std::basic_ostream<CharT, Traits> ist, der Ausdruck out << setw(n)
- vom Typ std::basic_ostream<CharT, Traits>& ist
- hat den Wert out
- verhält sich so, als ob f(out, n) aufgerufen worden wäre
- wenn in ein Objekt vom Typ std::basic_istream<CharT, Traits> ist, der Ausdruck in >> setw(n)
- vom Typ std::basic_istream<CharT, Traits>& ist
- hat den Wert in
- verhält sich so, als ob f(in, n) aufgerufen worden wäre
wobei die Funktion f definiert ist als
void f(std::ios_base& str, int n) { // set width str.width(n); }
[bearbeiten] Hinweise
Die Breiten-Eigenschaft des Streams wird auf Null zurückgesetzt (was "nicht spezifiziert" bedeutet), wenn eine der folgenden Funktionen aufgerufen wird:
- Eingabe
- Ausgabe
- Überladungen von basic_ostream::operator<<(), die arithmetische Typen oder void-Zeiger nehmen (in Phase 3 von num_put::put())
- operator<<(basic_ostream&, char) und operator<<(basic_ostream&, char*)
- operator<<(basic_ostream&, basic_string&)
- std::put_money (innerhalb von money_put::put())
- std::quoted (wenn mit einem Ausgabestream verwendet)
Die genauen Auswirkungen dieses Modifikators auf Ein- und Ausgabe variieren je nach den einzelnen I/O-Funktionen und werden auf den jeweiligen Seiten der operator<< und operator>> Überladungen individuell beschrieben.
[bearbeiten] Beispiel
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "no setw: [" << 42 << "]\n" << "setw(6): [" << std::setw(6) << 42 << "]\n" << "no setw, several elements: [" << 89 << 12 << 34 << "]\n" << "setw(6), several elements: [" << 89 << std::setw(6) << 12 << 34 << "]\n"; std::istringstream is("hello, world"); char arr[10]; is >> std::setw(6) >> arr; std::cout << "Input from \"" << is.str() << "\" with setw(6) gave \"" << arr << "\"\n"; }
Ausgabe
no setw: [42] setw(6): [ 42] no setw, several elements: [891234] setw(6), several elements: [89 1234] Input from "hello, world" with setw(6) gave "hello"
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 183 | C++98 | setw konnte nur mit Streams vonTyp std::ostream oder std::istream verwendet werden |
verwendbar mit jedem Zeichenstrom |
[bearbeiten] Siehe auch
| verwaltet die Feldbreite (public member function of std::ios_base) | |
| Ändert das Füllzeichen (Funktion-Template) | |
| Legt die Platzierung von Füllzeichen fest (Funktion) | |
| Steuert, ob ein Präfix zur Anzeige der numerischen Basis verwendet wird (Funktion) |