C++
std :: iomanip
Suche…
std :: setw
int val = 10;
// val will be printed to the extreme left end of the output console:
std::cout << val << std::endl;
// val will be printed in an output field of length 10 starting from right end of the field:
std::cout << std::setw(10) << val << std::endl;
Dies gibt aus:
10
10
1234567890
(wo die letzte Zeile dazu dient, die Zeichenversätze zu sehen).
Manchmal müssen wir die Breite des Ausgabefeldes einstellen, normalerweise, wenn wir die Ausgabe in einem strukturierten und richtigen Layout erhalten möchten. std::setw
kann mit std::setw
von std :: iomanip durchgeführt werden .
Die Syntax für std::setw
lautet:
std::setw(int n)
Dabei ist n die Länge des einzustellenden Ausgabefeldes
std :: setprecision
Bei Verwendung in einem Ausdruck out << setprecision(n)
oder in >> setprecision(n)
wird der Genauigkeitsparameter des Streams auf n genau gesetzt. Parameter dieser Funktion ist Integer, was für die Genauigkeit ein neuer Wert ist.
Beispiel:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>
int main()
{
const long double pi = std::acos(-1.L);
std::cout << "default precision (6): " << pi << '\n'
<< "std::precision(10): " << std::setprecision(10) << pi << '\n'
<< "max precision: "
<< std::setprecision(std::numeric_limits<long double>::digits10 + 1)
<< pi << '\n';
}
//Output
//default precision (6): 3.14159
//std::precision(10): 3.141592654
//max precision: 3.141592653589793239
std :: setfill
Bei Verwendung in einem Ausdruck out << setfill(c)
das Füllzeichen des Streams auf c
.
Hinweis: Das aktuelle Füllzeichen kann mit std::ostream::fill
.
Beispiel:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << "default fill: " << std::setw(10) << 42 << '\n'
<< "setfill('*'): " << std::setfill('*')
<< std::setw(10) << 42 << '\n';
}
//output::
//default fill: 42
//setfill('*'): ********42
std :: setiosflags
Bei Verwendung in einem Ausdruck out << setiosflags(mask)
oder in >> setiosflags(mask)
werden alle Format-Flags des Streams in >> setiosflags(mask)
oder in >> setiosflags(mask)
, wie in der Maske angegeben.
Liste aller std::ios_base::fmtflags
:
-
dec
- Dezimalbasis für ganzzahlige E / A verwenden -
oct
- Oktalbasis für ganzzahlige E / A verwenden -
hex
- verwendet eine hexadezimale Basis für ganzzahlige E / A -
basefield
-dec|oct|hex|0
nützlich für Maskierungsoperationen -
left
Links-Einstellung (Füllzeichen rechts hinzufügen) -
right
Rechts-Einstellung (füllt links Füllzeichen) -
internal
- interne Anpassung (fügt Füllzeichen zum internen festgelegten Punkt hinzu) -
adjustfield
-left|right|internal
. Nützlich für Maskierungsvorgänge -
scientific
- Generieren Sie Fließkomma-Typen mit Hilfe der wissenschaftlichen Notation oder der Hex-Notation, wenn Sie sie mit einer festen Schreibweise kombinieren -
fixed
- Generiert Fließkommatypen mit fester Notation oder Hex-Notation in Kombination mit wissenschaftlicher -
floatfield
-scientific|fixed|(scientific|fixed)|0
. Nützlich für Maskierungsvorgänge -
boolalpha
- Einfügen und Extrahieren desbool
Typs im alphanumerischen Format -
showbase
- Generieren Sie ein Präfix, das die numerische Basis für die Ganzzahlausgabe angibt, und fordern Sie das Währungskennzeichen in monetärer E / A an -
showpoint
- Erzeugt uneingeschränkt ein Dezimalzeichen für die Ausgabe von Gleitkommazahlen -
showpos
- ein generieren+
Zeichen für nicht-negative numerische Ausgabe -
skipws
- Überspringt führende Leerzeichen vor bestimmten Eingabevorgängen -
unitbuf
den Ausgang nach jeder Ausgabeoperation -
uppercase
- Ersetzen Sie bestimmte Kleinbuchstaben in bestimmten Ausgabeoperationen durch Großbuchstaben
Beispiel für Manipulatoren:
#include <iostream>
#include <string>
#include<iomanip>
int main()
{
int l_iTemp = 47;
std::cout<< std::resetiosflags(std::ios_base::basefield);
std::cout<<std::setiosflags( std::ios_base::oct)<<l_iTemp<<std::endl;
//output: 57
std::cout<< std::resetiosflags(std::ios_base::basefield);
std::cout<<std::setiosflags( std::ios_base::hex)<<l_iTemp<<std::endl;
//output: 2f
std::cout<<std::setiosflags( std::ios_base::uppercase)<<l_iTemp<<std::endl;
//output 2F
std::cout<<std::setfill('0')<<std::setw(12);
std::cout<<std::resetiosflags(std::ios_base::uppercase);
std::cout<<std::setiosflags( std::ios_base::right)<<l_iTemp<<std::endl;
//output: 00000000002f
std::cout<<std::resetiosflags(std::ios_base::basefield|std::ios_base::adjustfield);
std::cout<<std::setfill('.')<<std::setw(10);
std::cout<<std::setiosflags( std::ios_base::left)<<l_iTemp<<std::endl;
//output: 47........
std::cout<<std::resetiosflags(std::ios_base::adjustfield)<<std::setfill('#');
std::cout<<std::setiosflags(std::ios_base::internal|std::ios_base::showpos);
std::cout<<std::setw(10)<<l_iTemp<<std::endl;
//output +#######47
double l_dTemp = -1.2;
double pi = 3.14159265359;
std::cout<<pi<<" "<<l_dTemp<<std::endl;
//output +3.14159 -1.2
std::cout<<std::setiosflags(std::ios_base::showpoint)<<l_dTemp<<std::endl;
//output -1.20000
std::cout<<setiosflags(std::ios_base::scientific)<<pi<<std::endl;
//output: +3.141593e+00
std::cout<<std::resetiosflags(std::ios_base::floatfield);
std::cout<<setiosflags(std::ios_base::fixed)<<pi<<std::endl;
//output: +3.141593
bool b = true;
std::cout<<std::setiosflags(std::ios_base::unitbuf|std::ios_base::boolalpha)<<b;
//output: true
return 0;
}