ios::adjustfield
到底是什么,它做什么?我何时以及如何使用它?
ios::adjustfield
是由ios::left
、ios::right
、ios::internal
组合而成的位掩码。后三个是控制输出调整的标志。本页有一个很好的例子来说明这三个标志的作用。
设置ios::adjustfield
本身没有多大意义,但是在任何给定时间设置三个调整标志中的一个以上没有任何意义。那么为什么标准库提供它呢?
答案是使清除现有的调整标志变得容易。如果flg
是当前的格式化标志集,你不能简单地通过flg |= ios::right;
来设置ios::right
,因为如果已经设置了不同的调整标志,你只是同时设置了两个调整标志,这是没有意义的。
相反,您需要首先使用flg &= ~ios::adjustfield;
清除当前的调整标志,这为您随后使用flg |= ios::right;
设置另一个调整标志扫清了道路。ios::setf()
函数操纵ios
标志,允许您为其提供要清除的标志的掩码。
请注意,通常不需要直接使用ios::adjustfield
;I/O操作符std::left
, std::right
和std::internal
更加方便。