# std::ios_base::fmtflags

< cpp‎ | io‎ | ios base

typedef /*implementation defined*/ fmtflags; |  |
static constexpr fmtflags dec = /*implementation defined*/ static constexpr fmtflags oct = /*implementation defined*/ static constexpr fmtflags hex = /*implementation defined*/ static constexpr fmtflags basefield = dec | oct | hex; |  |
static constexpr fmtflags left = /*implementation defined*/ static constexpr fmtflags right = /*implementation defined*/ static constexpr fmtflags internal = /*implementation defined*/ static constexpr fmtflags adjustfield = left | right | internal; |  |
static constexpr fmtflags scientific = /*implementation defined*/ static constexpr fmtflags fixed = /*implementation defined*/ static constexpr fmtflags floatfield = scientific | fixed; |  |
static constexpr fmtflags boolalpha = /*implementation defined*/ static constexpr fmtflags showbase = /*implementation defined*/ static constexpr fmtflags showpoint = /*implementation defined*/ static constexpr fmtflags showpos = /*implementation defined*/ static constexpr fmtflags skipws = /*implementation defined*/ static constexpr fmtflags unitbuf = /*implementation defined*/ static constexpr fmtflags uppercase = /*implementation defined*/ |  |

指定可用的格式化标志。它是位掩码类型 (BitmaskType) 。定义下列常量：

常量 | 解释
`dec` | 为整数 I/O 使用十进制底：见 std::dec
`oct` | 为整数 I/O 使用八进制底：见 std::oct
`hex` | 为整数 I/O 使用十六进制底：见 std::hex
`basefield` | dec|oct|hex 。适用于掩码运算
`left` | 左校正（添加填充字符到右）：见 std::left
`right` | 右校正（添加填充字符到左）：见 std::right
`internal` | 内部校正（添加填充字符到内部选定点）：见 std::internal
`adjustfield` | left|right|internal 。适用于掩码运算
`scientific` | 用科学记数法生成浮点类型，或若与 fixed 组合则用十六进制记法：见 std::scientific
`fixed` | 用定点记法生成浮点类型，或若与 scientific 组合则用十六进制记法：见 std::fixed
`floatfield` | scientific|fixed 。适用于掩码运算
`boolalpha` | 以字母数字格式插入并释出 bool 类型：见 std::boolalpha
`showbase` | 生成为整数输出指示数字基底的前缀，货币 I/O 中要求现金指示器：见 std::showbase
`showpoint` | 无条件为浮点数输出生成小数点字符：见 std::showpoint
`showpos` | 为非负数值输出生成 + 字符，见 std::showpos
`skipws` | 在具体输入操作前跳过前导空白符：见 std::skipws
`unitbuf` | 在每次输出操作后冲入输出：见 std::unitbuf
`uppercase` | 在具体输出的输出操作中以大写等价替换小写字符：见 std::uppercase

### 示例

下列示例展示打印同一结果的数种不同方式。

    #include <iostream>

    int main()
    {
        int num = 150;

        // 以 fmtflags 为类成员常量：
        std::cout.setf(std::ios_base::hex, std::ios_base::basefield);
        std::cout.setf(std::ios_base::showbase);
        std::cout << num << '\n';

        // 以 fmtflags 为继承的类成员常量：
        std::cout.setf (std::ios::hex , std::ios::basefield);
        std::cout.setf (std::ios::showbase);
        std::cout << num << '\n';

        // 以 fmtflags 为对象成员常量：
        std::cout.setf(std::cout.hex, std::cout.basefield);
        std::cout.setf(std::cout.showbase);
        std::cout << num << '\n';

        // 以 fmtflags 为类型：
        std::ios_base::fmtflags ff;
        ff = std::cout.flags();
        ff &= ~std::cout.basefield;   // 解除设置 basefield 位
        ff |= std::cout.hex;          // 设置 hex
        ff |= std::cout.showbase;     // 设置 showbase
        std::cout.flags(ff);
        std::cout << num << '\n';

        // 不使用 fmtflags ，但使用操纵符：
        std::cout << std::hex << std::showbase << num << '\n';
    }

输出：

    0x96
    0x96
    0x96
    0x96
    0x96

### 参阅

flags | 管理格式标志 (公开成员函数)
setf | 设置特定格式标志 (公开成员函数)
unsetf | 清除特定格式的标志 (公开成员函数)
setbase | 更改用于整数 I/O 的基数 (函数)
setfill | 更改填充字符 (函数模板)
fixed scientific hexfloat defaultfloat (C++11)(C++11) | 更改用于浮点 I/O 的格式化 (函数)
showbase noshowbase | 控制是否使用前缀指示数值基数 (函数)
boolalpha noboolalpha | 在布尔值的文本和数值表示间切换 (函数)
showpos noshowpos | 控制是否将 `+` 号与非负数一同使用 (函数)
showpoint noshowpoint | 控制浮点表示是否始终包含小数点 (函数)
unitbuf nounitbuf | 控制是否每次操作后冲洗输出 (函数)
skipws noskipws | 控制是否跳过输入上的前导空白符 (函数)
uppercase nouppercase | 控制一些输出操作是否使用大写字母 (函数)