我在读一本教科书时遇到了这条线。
它似乎在两列中漂亮地格式化输出(我猜左边的设置宽度使右边的看起来即使它都从同一列开始)。不过,我不太确定这条线到底在做什么。
cout.setf(ios::left, ios::adjustfield);
有人能给我解释一下吗?
最佳答案
它强制以左对齐方式输出固定宽度字段中的文本。参见 this reference .这是使用该函数的第二个覆盖,该函数接受用于设置特定标志的掩码。
此覆盖将清除 std::ios_base::adjustfield
中设置的任何现有标志,它通过 stream
对象处理文本输出的对齐。
不采用标志掩码(第二个参数)的覆盖将简单地另外设置指定的标志,这在 adjustfield
的情况下没有多大意义,因为有效值只有 left
、right
和 internal
,它们都处理文本对齐。
希望这个小例子能说明问题:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout.setf(std::ios::left, std::ios::adjustfield);
cout << setfill('^') << setw(10) << "Hello" << "\n";
cout.setf(std::ios::right, std::ios::adjustfield);
cout << setfill('0') << setw(10) << "99\n";
return 0;
}
它给出了输出:
Hello^^^^^
000000099
关于c++ - setf(ios::left, ios::adjustfield) 的组合有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344118/