I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
Floating-point formatting | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
Integer formatting | |||||||||||||||||||||||||||||||
Boolean formatting | |||||||||||||||||||||||||||||||
Field width and fill control | |||||||||||||||||||||||||||||||
Other formatting | |||||||||||||||||||||||||||||||
Whitespace processing | |||||||||||||||||||||||||||||||
Output flushing | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Status flags manipulation | |||||||||||||||||||||||||||||||
Time and money I/O | |||||||||||||||||||||||||||||||
Quoted manipulator | |||||||||||||||||||||||||||||||
(C++14) |
Defined in header <ios> | ||
std::ios_base& fixed(std::ios_base& str); | (1) | |
std::ios_base& scientific(std::ios_base& str); | (2) | |
std::ios_base& hexfloat(std::ios_base& str); | (3) | (since C++11) |
std::ios_base& defaultfloat(std::ios_base& str); | (4) | (since C++11) |
Modifies the default formatting for floating-point output.
floatfield
of the streamstr tofixed
as if by callingstr.setf(std::ios_base::fixed,std::ios_base::floatfield).floatfield
of the streamstr toscientific
as if by callingstr.setf(std::ios_base::scientific,std::ios_base::floatfield).floatfield
of the streamstr tofixed
andscientific
simultaneously as if by callingstr.setf(std::ios_base::fixed|std::ios_base::scientific,std::ios_base::floatfield). This enables hexadecimal floating-point formatting.floatfield
of the streamstr to zero, as if by callingstr.unsetf(std::ios_base::floatfield). This enables the default floating-point formatting, which is different from fixed and scientific.This is an I/O manipulator, it may be called with an expression such asout<< std::fixed for anyout
of typestd::basic_ostream (or with an expression such asin>> std::scientific for anyin
of typestd::basic_istream).
Contents |
str | - | reference to I/O stream |
str (reference to the stream after manipulation).
Hexadecimal floating-point formatting ignores the stream precision specification, as required by the specification ofstd::num_put::do_put.
These manipulators do not affect floating-point parsing.
#include <iomanip>#include <iostream>#include <sstream> enumclass cap{ title, middle, end}; void print(constchar* text,double num, cap c){if(c== cap::title)std::cout<<"┌──────────┬────────────┬──────────────────────────┐\n""│ number │ iomanip │ representation │\n""├──────────┼────────────┼──────────────────────────┤\n";std::cout<<std::left<<"│ "<<std::setw(8)<< text<<" │ fixed │ "<<std::setw(24)<< std::fixed<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ scientific │ "<<std::setw(24)<< std::scientific<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ hexfloat │ "<<std::setw(24)<< std::hexfloat<< num<<" │\n"<<"│ "<<std::setw(8)<< text<<" │ default │ "<<std::setw(24)<< std::defaultfloat<< num<<" │\n";std::cout<<(c!= cap::end?"├──────────┼────────────┼──────────────────────────┤\n":"└──────────┴────────────┴──────────────────────────┘\n");} int main(){ print("0.0",0.0, cap::title); print("0.01",0.01, cap::middle); print("0.00001",0.00001, cap::end); // Note; choose clang for correct outputdouble f;std::istringstream("0x1.8p+0")>> f;std::cout<<"Parsing 0x1.8p+0 gives "<< f<<'\n'; std::istringstream("0x1P-1022")>> f;std::cout<<"Parsing 0x1P-1022 gives "<< f<<'\n';}
Output:
┌──────────┬────────────┬──────────────────────────┐│ number │ iomanip │ representation │├──────────┼────────────┼──────────────────────────┤│ 0.0 │ fixed │ 0.000000 ││ 0.0 │ scientific │ 0.000000e+00 ││ 0.0 │ hexfloat │ 0x0p+0 ││ 0.0 │ default │ 0 │├──────────┼────────────┼──────────────────────────┤│ 0.01 │ fixed │ 0.010000 ││ 0.01 │ scientific │ 1.000000e-02 ││ 0.01 │ hexfloat │ 0x1.47ae147ae147bp-7 ││ 0.01 │ default │ 0.01 │├──────────┼────────────┼──────────────────────────┤│ 0.00001 │ fixed │ 0.000010 ││ 0.00001 │ scientific │ 1.000000e-05 ││ 0.00001 │ hexfloat │ 0x1.4f8b588e368f1p-17 ││ 0.00001 │ default │ 1e-05 │└──────────┴────────────┴──────────────────────────┘Parsing 0x1.8p+0 gives 1.5Parsing 0x1P-1022 gives 2.22507e-308
changes floating-point precision (function)[edit] |