C++ ios_base fmtflags
描述
此类型被成员函数标志 setf 和 unsetf 用作其参数和/或返回值。
声明
以下是 ios_base::fmtflags 的声明。
std::ios_base::fmtflags ff;
这些函数传递和检索的值可以是以下成员常量的任何有效组合,如下所示 −
| 字段 | 成员常量 | 设置时的效果 |
|---|---|---|
| independent flags | boolalpha | r以字母字符串形式读取/写入 bool 元素(true 和 false)。 |
| showbase | 在对应的数字基前缀之前写入整数值。 | |
| showpoint | 写入浮点值,始终包括小数点。 | |
| showpos | 写入非负数值,并在前面加上加号 (+)。 | |
| skipws | 跳过某些输入操作的前导空格。 | |
| unitbuf | 每次插入操作后刷新输出。 | |
| uppercase | 在某些插入操作中用大写字母替换小写字母。 | |
numerical base (basefield) |
dec | 使用十进制格式读取/写入整数值。 |
| hex | 使用十六进制基本格式读取/写入整数值。 | |
| oct | 使用八进制格式读取/写入整数值。 | |
float format (floatfield) |
fixed | 以定点表示法写入浮点值。 |
| scientific | 用科学计数法写浮点值。 | |
adjustment (adjustfield) |
internal | 通过在指定的内部点插入 fill characters 将输出填充到 field width。 |
| left | 输出被填充到 field width 并在末尾附加 fill characters。 | |
| right | 通过在开头插入 fill characters 将输出填充到 field width。 |
如下所示,也可以使用由三组选择性标志中每组的值组合而成的三个附加位掩码常数。
| 标志值 | 相当于 |
|---|---|
| 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

