Recherche…


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;

Cela produit:

10
        10
1234567890

(où la dernière ligne est là pour aider à voir les décalages de caractères).

Parfois, nous devons définir la largeur du champ de sortie, généralement lorsque nous avons besoin d'une sortie structurée et appropriée. Cela peut être fait en utilisant std::setw de std :: iomanip .

La syntaxe de std::setw est la suivante:

std::setw(int n)

où n est la longueur du champ de sortie à définir

std :: setprecision

Lorsqu'il est utilisé dans une expression out << setprecision(n) ou in >> setprecision(n) , définit le paramètre de précision du flux ou bien exactement n. Le paramètre de cette fonction est un entier, qui est une nouvelle valeur pour la précision.

Exemple:

#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

Utilisé dans une expression out << setfill(c) définit le caractère de remplissage du flux sur c .

Remarque: Le caractère de remplissage actuel peut être obtenu avec std::ostream::fill .

Exemple:

#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

Lorsqu'elle est utilisée dans une expression out << setiosflags(mask) ou in >> setiosflags(mask) , définit tous les indicateurs de format du flux comme étant spécifiés par le masque.

Liste de tous les std::ios_base::fmtflags :

  • dec - utilise la base décimale pour les E / S entières
  • oct - utilise une base octale pour les E / S entières
  • hex - utilise la base hexadécimale pour l'entier E / S
  • basefield - dec|oct|hex|0 utile pour les opérations de masquage
  • left - réglage gauche (ajouter des caractères de remplissage à droite)
  • right - ajustement à droite (ajoute des caractères de remplissage à gauche)
  • internal - ajustement interne (ajoute des caractères de remplissage au point désigné interne)
  • adjustfield - left|right|internal . Utile pour les opérations de masquage
  • scientific - génère des types à virgule flottante en utilisant la notation scientifique ou la notation hexadécimale si elle est combinée à
  • fixed - génère des types à virgule flottante en utilisant une notation fixe ou une notation hexadécimale si elle est associée à des éléments scientifiques
  • floatfield - scientific|fixed|(scientific|fixed)|0 . Utile pour les opérations de masquage
  • boolalpha - insérer et extraire le type bool au format alphanumérique
  • showbase - génère un préfixe indiquant la base numérique pour la sortie entière, nécessite l'indicateur de devise dans les E / S monétaires
  • showpoint - génère un caractère de point décimal sans condition pour la sortie de nombre à virgule flottante
  • showpos - génère un caractère + pour une sortie numérique non négative
  • skipws - skipws les espaces blancs avant certaines opérations de saisie
  • unitbuf la sortie après chaque opération de sortie
  • uppercase - remplace certaines lettres minuscules par leurs équivalents majuscules dans certaines opérations de sortie

Exemple de manipulateurs:

    #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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow