#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
cout << right << "Hello" << setw(10) << "World\n";
cout << right << "Goodbye" << setw(10) << "World\n";
}
为什么这会导致输出如下:
Hello World
Goodbye World
而不是:
Hello World
Goodbye World
我在这里做错了什么?
编辑:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
cout << "Hello" << " World";
cout << right << setw(10) << "today\n";
cout << "Goodbye" << " World";
cout << right << setw(10) << "today\n";
}
如果我尝试这个,为什么“今天”部分错位了?
原文由 user3340001 发布,翻译遵循 CC BY-SA 4.0 许可协议
改变运算符的顺序来解决这个问题:
using namespace std
。std::setw()
运算符将字段设置为下一个值。并且std::left
或std::right
运算符设置该字段中值的位置。这个例子
将创建这种格式:
您会看到第一个“字段”有 10 个字符,其中放置第一个文本,第二个“字段”有 20 个字符,其中第二个单词右对齐。但是,如果第一个字段中的文本比该字段长,则会发生这种情况:
第二个字段只是移动了字符数。流从不跟踪 _当前位置_,它只是使用给定大小的“字段”构建输出。
要证明给定页面的文本,请使用如下代码:
此示例证明每一行都在开始时填充给定页面。它的工作原理是将文本拆分为单词,用这些单词填充行,并证明每行与宽度完全匹配。