| 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 <iomanip> | ||
/*unspecified*/ setbase(int base); | ||
Sets the numeric base of the stream. When used in an expressionout<< setbase(base) orin>> setbase(base), changes thebasefield flag of the streamout orin, depending on the value ofbase:
basefield tostd::ios_base::hex.Values ofbase other than 8, 10, or 16 resetbasefield to zero, which corresponds to decimal output and prefix-dependent input.
Contents |
| base | - | new value for basefield |
An object of unspecified type such that
where the functionf is defined as:
void f(std::ios_base& str,int base){// set basefield str.setf(base==8?std::ios_base::oct: base==10?std::ios_base::dec: base==16?std::ios_base::hex:std::ios_base::fmtflags(0),std::ios_base::basefield);}
#include <iomanip>#include <iostream>#include <sstream> int main(){std::cout<<"Parsing string\"10 0x10 010\"\n"; int n1, n2, n3;std::istringstream s("10 0x10 010"); s>> std::setbase(16)>> n1>> n2>> n3;std::cout<<"hexadecimal parse: "<< n1<<' '<< n2<<' '<< n3<<'\n'; s.clear(); s.seekg(0); s>> std::setbase(0)>> n1>> n2>> n3;std::cout<<"prefix-dependent parse: "<< n1<<' '<< n2<<' '<< n3<<'\n'; std::cout<<"hex output: "<< std::setbase(16)<<std::showbase<< n1<<' '<< n2<<' '<< n3<<'\n';}
Output:
Parsing string "10 0x10 010"hexadecimal parse: 16 16 16prefix-dependent parse: 10 16 8hex output: 0xa 0x10 0x8
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 183 | C++98 | setbase could only be used with streamsof typestd::ostream orstd::istream | usable with any character stream |
| changes the base used for integer I/O (function)[edit] | |
| controls whether prefix is used to indicate numeric base (function)[edit] |