Difference between revisions of "cpp/io/manip/showbase"
From cppreference.com
(z) |
Andreas Krug (Talk | contribs) m (fmt, @@, capitalized 1st letter, {{c}}, ., headers sorted, langlinks) |
||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{cpp/title|showbase|noshowbase}} | |
− | + | {{cpp/io/manip/navbar}} | |
− | + | {{dcl begin}} | |
− | + | {{dcl header|ios}} | |
− | > | + | {{dcl|num=1| |
+ | std::ios_base& showbase( std::ios_base& str ); | ||
+ | }} | ||
+ | {{dcl|num=2| | ||
+ | std::ios_base& noshowbase( std::ios_base& str ); | ||
+ | }} | ||
+ | {{dcl end}} | ||
+ | |||
+ | @1@ Enables the {{tt|showbase}} flag in the stream {{c|str}} as if by calling {{c|str.setf(std::ios_base::showbase)}}. | ||
+ | |||
+ | @2@ Disables the {{tt|showbase}} flag in the stream {{c|str}} as if by calling {{c|str.unsetf(std::ios_base::showbase)}}. | ||
+ | |||
+ | This is an I/O manipulator, it may be called with an expression such as {{c|out << std::showbase}} for any {{tt|out}} of type {{lc|std::basic_ostream}} or with an expression such as {{c|in >> std::showbase}} for any {{tt|in}} of type {{lc|std::basic_istream}}. | ||
+ | |||
+ | The {{tt|showbase}} flag affects the behavior of integer output (see {{lc|std::num_put::put}}), monetary input (see {{lc|std::money_get::get}}) and monetary output (see {{lc|std::money_put::put}}). | ||
+ | |||
+ | ===Parameters=== | ||
+ | {{par begin}} | ||
+ | {{par|str|reference to I/O stream}} | ||
+ | {{par end}} | ||
+ | |||
+ | ===Return value=== | ||
+ | {{c|str}} (reference to the stream after manipulation). | ||
+ | |||
+ | ===Notes=== | ||
+ | As specifed in {{lc|std::num_put::put}}, the showbase flag in integer output acts like the # format specifier in {{lc|std::printf}}, which means the numeric base prefix is ''not'' added when outputting the value zero. | ||
+ | |||
+ | ===Example=== | ||
+ | {{example | ||
+ | |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 is("3.14"); | ||
+ | is >> std::showbase >> std::get_money(val); | ||
+ | std::cout << "With showbase, parsing 3.14 as money gives " << val << '\n'; | ||
+ | is.seekg(0); | ||
+ | is >> 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 | ||
+ | }} | ||
+ | |||
+ | ===See also=== | ||
+ | {{dsc begin}} | ||
+ | {{dsc inc|cpp/io/manip/dsc resetiosflags}} | ||
+ | {{dsc inc|cpp/io/manip/dsc setiosflags}} | ||
+ | {{dsc end}} | ||
+ | |||
+ | {{langlinks|de|es|fr|it|ja|pt|ru|zh}} |
Latest revision as of 23:12, 15 September 2023
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 is("3.14"); is >> std::showbase >> std::get_money(val); std::cout << "With showbase, parsing 3.14 as money gives " << val << '\n'; is.seekg(0); is >> 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
[edit] See also
clears the specified ios_base flags (function) | |
sets the specified ios_base flags (function) |