Ricerca…


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;

Questo produce:

10
        10
1234567890

(dove l'ultima riga è lì per aiutare a vedere i caratteri offset).

A volte è necessario impostare la larghezza del campo di output, solitamente quando è necessario ottenere l'output in un layout strutturato e corretto. Questo può essere fatto usando std::setw di std :: iomanip .

La sintassi per std::setw è:

std::setw(int n)

dove n è la lunghezza del campo di output da impostare

std :: setprecision

Se utilizzato in un'espressione out << setprecision(n) o in >> setprecision(n) , imposta il parametro di precisione dello stream out o in esattamente a n. Il parametro di questa funzione è intero, che è un nuovo valore per la precisione.

Esempio:

#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

Se utilizzato in un'espressione out << setfill(c) imposta il carattere di riempimento dello stream su c .

Nota: il carattere di riempimento corrente può essere ottenuto con std::ostream::fill .

Esempio:

#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

Se utilizzato in un'espressione out << setiosflags(mask) o in >> setiosflags(mask) , imposta tutti i flag di formato dello stream out o in come specificato dalla maschera.

Elenco di tutti gli std::ios_base::fmtflags :

  • dec - usa la base decimale per l'I / O intero
  • oct - usa la base ottale per l'intero I / O
  • hex - usa la base esadecimale per l'I / O intero
  • basefield - dec|oct|hex|0 utile per le operazioni di mascheramento
  • regolazione left / sinistra (aggiungi caratteri di riempimento a destra)
  • regolazione right -destra (aggiunge caratteri di riempimento a sinistra)
  • internal - aggiustamento interno (aggiunge caratteri di riempimento al punto designato interno)
  • adjustfield - left|right|internal . Utile per le operazioni di mascheramento
  • scientific - generi i tipi in virgola mobile usando la notazione scientifica o la notazione esadecimale se combinati con fissi
  • fixed - generi i tipi a virgola mobile usando la notazione fissa o la notazione esadecimale se combinata con quella scientifica
  • floatfield - scientific|fixed|(scientific|fixed)|0 . Utile per le operazioni di mascheramento
  • boolalpha - inserire ed estrarre bool tipo in formato alfanumerico
  • showbase : genera un prefisso che indica la base numerica per l'output intero, richiede l'indicatore di valuta showbase / O monetario
  • showpoint - genera un carattere punto decimale incondizionatamente per l'uscita del numero in virgola mobile
  • showpos - genera un carattere + per l'output numerico non negativo
  • skipws : salta gli spazi bianchi prima di determinate operazioni di input
  • unitbuf svuota l'output dopo ogni operazione di uscita
  • uppercase - sostituire alcune lettere minuscole con i loro equivalenti maiuscoli in determinate operazioni di output output

Esempio di manipolatori:

    #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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow