C++
std :: iomanip
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 voorbasefield
-
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 extractbool
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 voorshowpoint
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;
}