std::showbase, std::noshowbase
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Input/output library
Print functions (C++23)
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)
Input/output manipulators
Floating-point formatting
(C++11)(C++11)
Integer formatting
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
Output flushing
(C++20)(C++20)
Status flags manipulation
Time and money I/O
Quoted manipulator
(C++14)
Defined in header
<ios>
std::ios_base & showbase( std::ios_base & str );
(1)
std::ios_base & noshowbase( std::ios_base & str );
(2)
2) Disables the
showbase
flag in the stream str as if by calling str.unsetf(std::ios_base::showbase ).This is an I/O manipulator, it may be called with an expression such as out << std::showbase for any out
of type std::basic_ostream or with an expression such as in >> std::showbase for any in
of type std::basic_istream .
The showbase
flag affects the behavior of integer output (see std::num_put::put ), monetary input (see std::money_get::get ) and monetary output (see std::money_put::put ).
Contents
[edit] Parameters
str
-
reference to I/O stream
[edit] Return value
str (reference to the stream after manipulation).
[edit] Notes
As specifed in std::num_put::put , the showbase flag in integer output acts like the # format specifier in std::printf , which means the numeric base prefix is not added when outputting the value zero.
[edit] Example
Run this code
#include <iomanip> #include <iostream> #include <locale> #include <sstream> int main() { // showbase affects the output of octals and hexadecimals std::cout << std::hex << "showbase: " << std::showbase << 42 << '\n' << "noshowbase: " << std::noshowbase << 42 << '\n'; // and both input and output of monetary values std::locale::global (std::locale ("en_US.UTF8")); long double val = 0; std::istringstream ("3.14") >> std::showbase >> std::get_money (val); std::cout << "With showbase, parsing 3.14 as money gives " << val << '\n'; std::istringstream ("3.14") >> std::noshowbase >> std::get_money (val); std::cout << "Without showbase, parsing 3.14 as money gives " << val << '\n'; }
Output:
showbase: 0x2a noshowbase: 2a With showbase, parsing 3.14 as money gives 0 Without showbase, parsing 3.14 as money gives 314