我正在读一本教科书而且我遇到了这一行.
它似乎在两列中巧妙地格式化输出(我猜左边的一个得到设置的宽度使得正确的一个看起来均匀,因为它全部从同一列开始).我不太清楚这条线路到底在做什么.
cout.setf(ios::left, ios::adjustfield);
Run Code Online (Sandbox Code Playgroud)
谁可以给我解释一下这个?
它强制使用左对齐输出固定宽度字段中的文本.请参阅此参考.这是使用该函数的第二个重写,它接受掩码,在该掩码中设置特定标志.
此覆盖将清除所有已设置的标志,这些标志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;
}
Run Code Online (Sandbox Code Playgroud)
它给出了输出:
Hello^^^^^
000000099
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7133 次 |
| 最近记录: |