C++
std :: iomanip
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 typebool
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;
}