Namespaces
Variants

std:: resetiosflags

From cppreference.net
< cpp ‎ | io ‎ | manip
Input/output manipulators
Floating-point formatting
Integer formatting
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
Output flushing
Status flags manipulation
resetiosflags
Time and money I/O
(C++11)
(C++11)
(C++11)
(C++11)
Quoted manipulator
(C++14)
定义于头文件 <iomanip>
/*unspecified*/ resetiosflags ( std:: ios_base :: fmtflags mask ) ;

当在表达式 out << resetiosflags ( mask ) in >> resetiosflags ( mask ) 中使用时,清除流 out in 中由 mask 指定的所有格式标志。

目录

参数

mask - 用于清除标志的位掩码

返回值

一个未指定类型的对象,使得

  • 如果 out 是类型为 std:: basic_ostream < CharT, Traits > 的对象,则表达式 out << resetiosflags ( mask )
    • 具有类型 std:: basic_ostream < CharT, Traits > &
    • 具有值 out
    • 行为如同调用了 f ( out, mask )
  • 如果 in 是类型为 std:: basic_istream < CharT, Traits > 的对象,则表达式 in >> resetiosflags ( mask )

其中函数 f 定义为:

void f(std::ios_base& str, std::ios_base::fmtflags mask)
{
    // 重置指定标志位
    str.setf(ios_base::fmtflags(0), mask);
}

示例

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::istringstream in("10 010 10 010 10 010");
    int n1, n2;
    in >> std::oct >> n1 >> n2;
    std::cout << "Parsing \"10 010\" with std::oct gives: " << n1 << ' ' << n2 << '\n';
    in >> std::dec >> n1 >> n2;
    std::cout << "Parsing \"10 010\" with std::dec gives: " << n1 << ' ' << n2 << '\n';
    in >> std::resetiosflags(std::ios_base::basefield) >> n1 >> n2;
    std::cout << "Parsing \"10 010\" with autodetect gives: " << n1 << ' ' << n2 << '\n';
}

输出:

Parsing "10 010" with std::oct gives: 8 8
Parsing "10 010" with std::dec gives: 10 10
Parsing "10 010" with autodetect gives: 10 8

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 应用于 发布时的行为 正确行为
LWG 183 C++98 resetiosflags 仅能用于
类型为 std::ostream std::istream 的流
可用于任意
字符流

参见

设置特定格式标志
( std::ios_base 的公开成员函数)
设置指定的 ios_base 标志
(函数)