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 des bool 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;
    }


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow