ios::adjustfield的目的是什么?

What is the purpose of ios::adjustfield?

本文关键字:是什么 ios adjustfield      更新时间:2023-10-16

ios::adjustfield到底是什么,它做什么?我何时以及如何使用它?

ios::adjustfield是由ios::leftios::rightios::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::rightstd::internal更加方便。