小白请问 cpp setw 函数

2019-04-07 00:24:17 +08:00
 jinqzzz

第二次输出为什么这么诡异?

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int line = 6;
    char ch = '*';
    cout << setfill(ch) << setw(line) << ch << endl;
    cout << ch << setw(line - 1) << ch << endl;
    return 0;
}

https://i.loli.net/2019/04/07/5ca8d21a450f7.jpg

https://i.loli.net/2019/04/07/5ca8d21a6c3e5.jpg

头疼一个小时了 😂,希望大佬能伸出援手

2302 次点击
所在节点    C
6 条回复
jinqzzz
2019-04-07 00:30:34 +08:00
Yvette
2019-04-07 00:58:52 +08:00
问问题的时候应该先说出你的疑惑在哪,这样大家才好回答你,而不是抛出一个本来就正确的结果。

我猜你可能以为 setfill 不会作用到第二行?你可以试试把代码重构成 cout.setfill(ch); cout.setw(line); 的形式,这样可能更容易理解
jinqzzz
2019-04-07 01:12:17 +08:00
@Yvette 谢谢大佬,铜币感谢。确实我以为 setfill 不会作用到第二行
我想用 setw 在第二行输出 星号 四个空格 星号,应该怎样修改呢
Yvette
2019-04-07 01:33:16 +08:00
@jinqzzz 可以搜 reset setfill,相信你很快就能得到答案的(要用 Google,百度搜不出来)
jinqzzz
2019-04-07 01:33:47 +08:00
@Yvette
```
cout << setw(line) << setfill(ch) << ch << endl;
cout << ch << setw(line - 1) << setfill(' ') << ch << endl;
```
再次感谢。这样写,第二行有空格了
jinqzzz
2019-04-07 01:34:18 +08:00
@Yvette 好的,我看下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX