C++ ios_base fmtflags



描述

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

声明

以下是 ios_base::fmtflags 的声明。

std::ios_base::fmtflags ff;

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

字段 成员常量 设置时的效果
独立标志 boolalpha 将布尔元素读/写为字母字符串(truefalse)。
showbase 写入以其相应的数字基数前缀开头的整数值。
showpoint 写入始终包含小数点的浮点值。
showpos 写入非负数值前加正号 (+) 。
skipws 在某些输入操作中跳过前导空格。
unitbuf 每次插入操作后刷新输出。
uppercase 在某些插入操作中使用大写字母替换小写字母。

数字基数

(basefield)

dec 使用十进制格式读/写整数值。
hex 使用十六进制格式读/写整数值。
oct 使用八进制格式读/写整数值。

浮点格式

(floatfield)

fixed 以定点表示法写入浮点值。
scientific 以科学计数法写入浮点值。

调整

(adjustfield)

internal 输出通过在指定的内部点插入填充字符来填充到字段宽度
left 输出通过在末尾附加填充字符来填充到字段宽度
right 输出通过在开头插入填充字符来填充到字段宽度

还可以使用三个额外的位掩码常量,这些常量由每三个选择性标志组的值组合而成,如下所示。

标志值 等价于
adjustfield left | right | internal
basefield dec | oct | hex
floatfield scientific | fixed

可以使用 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
广告