cout has the flags std::ios_base::skipws and std::ios_base::dec set by default
You can verify this with the code:
#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios_base::fmtflags flags = cout.flags();
    string sflags;
    if( flags & ios_base::skipws ) sflags += "skipws";
    if( flags & ios_base::unitbuf ) sflags += sflags.empty() ? "unitbuf" : " unitbuf";
    if( flags & ios_base::uppercase ) sflags += sflags.empty() ? "uppercase" : " uppercase";
    if( flags & ios_base::showbase ) sflags += sflags.empty() ? "showbase" : " showbase";
    if( flags & ios_base::showpoint ) sflags += sflags.empty() ? "showpoint" : " showpoint";
    if( flags & ios_base::showpos ) sflags += sflags.empty() ? "showpos" : " showpos";
    if( flags & ios_base::left ) sflags += sflags.empty() ? "left" : " left";
    if( flags & ios_base::right ) sflags += sflags.empty() ? "right" : " right";
    if( flags & ios_base::internal ) sflags += sflags.empty() ? "internal" : " internal";
    if( flags & ios_base::dec ) sflags += sflags.empty() ? "dec" : " dec";
    if( flags & ios_base::oct ) sflags += sflags.empty() ? "oct" : " oct";
    if( flags & ios_base::hex ) sflags += sflags.empty() ? "hex" : " hex";
    if( flags & ios_base::scientific ) sflags += sflags.empty() ? "scientific" : " scientific";
    if( flags & ios_base::fixed ) sflags += sflags.empty() ? "fixed" : " fixed";
    if( flags & ios_base::hexfloat ) sflags += sflags.empty() ? "hexfloat" : " hexfloat";
    if( flags & ios_base::boolalpha ) sflags += sflags.empty() ? "boolalpha" : " boolalpha";
    if( flags & ios_base::_Stdio ) sflags += sflags.empty() ? "_Stdio" : " _Stdio";
    cout << "Standard flags from cout stream: " << sflags << endl;
}
Clearly the flag std::ios_base::skipws is irrelevant for cout.
The flags and their default setting is inherited from std::ios_base (well, actually, the settings are defined for std::basic_ios<cT, Traits>; the defaults are define in 27.5.5.2 [basic.ios.cons]), a common base class of both input and output streams. The flags are shared if the stream inherits from both input and output streams. There are other flags which don't make much sense on either input or output streams.
The skipws flag is set in all standard streams on initialization. Not just std::cout. It makes as much sense for std::cout as for any other stream. You can disable it with noskipws if you hate it so much.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With