C++ ios_base fmtflags


描述

该类型被成员函数 flags、setf 和 unsetf 用作其参数和/或返回值。

宣言

以下是 ios_base::fmtflags 的声明。

std::ios_base::fmtflags ff;

这些函数传递和检索的值可以是以下成员常量的任意有效组合,如下所示 -

场地 成员常数 设置后的效果
独立旗帜 布尔阿尔法 将 bool 元素读/写为字母字符串 (truefalse)。
展示基地 在其相应的数字基本前缀之前写入整数值。
表演点 写入始终包含小数点的浮点值。
秀波 写入非负数值,前面加上加号 (+)。
跳过ws 跳过某些输入操作的前导空格。
单元缓冲区 每次插入操作后刷新输出。
大写 在某些插入操作中用大写字母替换小写字母。

数字基数

基场

十二月 使用十进制格式读取/写入整数值。
十六进制 使用十六进制基本格式读取/写入整数值。
十月 使用八进制基本格式读取/写入整数值。

浮点格式

浮场

固定的 以定点表示法写入浮点值。
科学的 用科学记数法写出浮点值。

调整

调整字段

内部的 通过在指定的内部点插入填充字符,将输出填充到字段宽度
左边 输出被填充到字段宽度,并在末尾附加填充字符。
正确的 通过在开头插入填充字符将输出填充到字段宽度。

还可以使用由三组选择性标志中每组的值的组合组成的三个附加位掩码常数,如下所示。

标志值 相当于
调整字段 左| 对| 内部的
基场 十二月 | 十月 | 十六进制
浮场 科学| 固定的

可以使用 OR 位运算符 (|) 将这些常量的值组合成单个 fmtflags 值。

例子

下面的示例显示了 ios_base::fmtflags。

#include <iostream>

int main () {

   std::cout.setf (std::ios_base::hex , std::ios_base::basefield);
   std::cout.setf (std::ios_base::showbase);
   std::cout << 100 << '\n';

   std::cout.setf (std::ios::hex , std::ios::basefield);
   std::cout.setf (std::ios::showbase);
   std::cout << 100 << '\n';

   std::cout.setf (std::cout.hex , std::cout.basefield);
   std::cout.setf (std::cout.showbase);
   std::cout << 100 << '\n';

   std::ios_base::fmtflags ff;
   ff = std::cout.flags();
   ff &= ~std::cout.basefield;   
   ff |= std::cout.hex;          
   ff |= std::cout.showbase;     
   std::cout.flags(ff);
   std::cout << 100 << '\n';

   std::cout << std::hex << std::showbase << 100 << '\n';

   return 0;
}

让我们编译并运行上面的程序,这将产生以下结果 -

0x64
0x64
0x64
0x64
0x64
ios.htm