C++ ios 库 - Setf
描述
它用于设置特定的格式标志。 流的格式标志会影响某些输入函数中解释数据的方式以及某些输出函数如何写入数据。 有关此函数参数的可能值,请参见 ios_base::fmtflags。
声明
以下是 ios_base::setf 函数的声明。
set (1) fmtflags setf (fmtflags fmtfl); mask (2) fmtflags setf (fmtflags fmtfl, fmtflags mask);
第一种形式 (1) 设置流的格式标志,其位在 fmtfl 中设置,其余部分保持不变,就像调用 flags(fmtfl|flags())。
第二种形式 (2) 设置流的格式标志,其位在 fmtfl 和 mask 中都设置,并清除其位在 mask 但不在 fmtfl 中设置的格式标志,就像调用 flags((fmtfl&mask)|(flags()&~mask)) 一样。
参数
fmtfl − 要设置的格式标志。 如果使用第二种语法,则只有在 fmtfl 和 mask 中设置的位在流的格式标志中设置; 在掩码中设置但未在 fmtfl 中设置的标志被清除。
mask − 包含要修改的标志的掩码。
返回值
调用前在流中选择的格式标志。
异常
Basic guarantee − 如果抛出异常,则流处于有效状态。
数据竞争
Modifies the stream object. 对同一流对象的并发访问可能会导致数据竞争。
示例
在下面的示例中解释了 ios_base::setf 函数。
#include <iostream> int main () { std::cout.setf ( std::ios::hex, std::ios::basefield ); std::cout.setf ( std::ios::showbase ); std::cout << 100 << '\n'; std::cout.unsetf ( std::ios::showbase ); std::cout << 100 << '\n'; return 0; }
让我们编译并运行上面的程序,这将产生以下结果 −
0x64 64