Zoeken…


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;

Dit geeft uit:

10
        10
1234567890

(waar de laatste regel aanwezig is om de karakterverschuivingen te zien).

Soms moeten we de breedte van het uitvoerveld instellen, meestal wanneer we de uitvoer in een gestructureerde en juiste lay-out moeten krijgen. Dat kan met std::setw van std :: iomanip .

De syntaxis voor std::setw is:

std::setw(int n)

waarbij n de lengte is van het in te stellen uitvoerveld

std :: setprecision

Bij gebruik in een uitdrukking out << setprecision(n) of in >> setprecision(n) , stelt de precisieparameter van de stream out of in exact n in. Parameter van deze functie is integer, wat een nieuwe waarde voor precisie is.

Voorbeeld:

#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

Wanneer gebruikt in een expressie out << setfill(c) het vulteken van de stream in op c .

Opmerking: het huidige vulteken kan worden verkregen met std::ostream::fill .

Voorbeeld:

#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

Bij gebruik in een uitdrukking out << setiosflags(mask) of in >> setiosflags(mask) , stelt alle in >> setiosflags(mask) van de stream uit of in zoals gespecificeerd door het masker.

Lijst van alle std::ios_base::fmtflags :

  • dec - gebruik de decimale basis voor gehele I / O
  • oct - gebruik octale basis voor gehele I / O
  • hex - gebruik hexadecimale basis voor gehele I / O
  • basefield - dec|oct|hex|0 nuttig voor basefield
  • left - links aanpassing (vul tekens aan de rechterkant toe)
  • right - rechts aanpassing (voegt tekens aan de linkerkant toe)
  • internal - interne aanpassing (voegt vultekens toe aan het interne aangewezen punt)
  • adjustfield - left|right|internal . Handig voor maskeerhandelingen
  • scientific - genereer drijvende komma types met behulp van wetenschappelijke notatie, of hex notatie indien gecombineerd met vast
  • fixed - genereer drijvende komma types met behulp van vaste notatie, of hex notatie indien gecombineerd met wetenschappelijk
  • floatfield - scientific|fixed|(scientific|fixed)|0 . Handig voor maskeerhandelingen
  • boolalpha - insert en extract bool type alfanumerieke formaat
  • showbase - genereer een voorvoegsel dat de numerieke basis voor gehele getallen aangeeft, vereist de valuta-indicator in monetaire I / O
  • showpoint - genereer onvoorwaardelijk een decimaalteken voor showpoint met drijvende komma
  • showpos - genereer een + -teken voor niet-negatieve numerieke uitvoer
  • skipws - sla voorloopruimte over voor bepaalde invoerbewerkingen
  • unitbuf spoelt de uitvoer na elke uitvoerbewerking
  • uppercase - vervang bepaalde kleine letters door hun hoofdletters in bepaalde uitvoeruitvoerhandelingen

Voorbeeld van 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow