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 中都设置的位才会在流的格式标志中设置;mask 中设置但在 fmtfl 中未设置的标志将被清除。

mask − 包含要修改的标志的掩码。

返回值

调用之前在流中选择的格式标志。

异常

基本保证 − 如果抛出异常,则流处于有效状态。

数据竞争

修改流对象。并发访问同一流对象可能会导致数据竞争。

示例

以下示例说明了 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
ios.htm
广告