gpt4 book ai didi

c++ - 流 cout 设置标志 std::ios_base::skipws 有什么原因吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:58 26 4
gpt4 key购买 nike

cout 默认设置了标志 std::ios_base::skipwsstd::ios_base::dec

您可以使用代码验证这一点:

#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;
}

很明显,标志 std::ios_base::skipws 与 cout 无关。

最佳答案

标志及其默认设置继承自 std::ios_base (好吧,实际上,设置是为 std::basic_ios<cT, Traits> 定义的;默认值在 27.5.5.2 [basic.ios.cons] 中定义),输入和输出流的公共(public)基类。如果流从输入流和输出流继承,则标志是共享的。还有其他标志对输入或输出流没有多大意义。

关于c++ - 流 cout 设置标志 std::ios_base::skipws 有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com