ios :: adjustfield的目的是什么?

问题描述 投票:0回答:1

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

c++ stream flags
1个回答
1
投票

ios::adjustfield是一个有点面具,通过OR'ing在一起ios::leftios::rightios::internal。后三者是控制输出调整的标志。 This page有一个很好的例子,说明这三个标志的作用。

尽管设置ios::adjustfield本身没有多大意义 - 在任何给定时间设置三个调整标志中的一个以上没有任何意义。那么为什么标准库提供它呢?

答案是让清除现有的调整标志变得容易。如果flg是当前的格式化标志集,则不能简单地通过ios::right设置flg |= ios::right;,因为如果已经设置了不同的调整标志,则只需同时设置两个调整标志,这是无意义的。

相反,你需要先用flg &= ~ios::adjustfield;清除当前的调整标志。这样你就可以用flg |= ios::right;设置另一个调整标志。操作ios::setf()标志的函数ios允许你给它一个要清除的标志的掩码。

请注意,您通常不需要直接使用ios::adjustfield; I / O操纵器std::leftstd::rightstd::internal更方便。

© www.soinside.com 2019 - 2024. All rights reserved.