V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jinqzzz
V2EX  ›  C

小白请问 cpp setw 函数

  •  
  •   jinqzzz · 2019-04-07 00:24:17 +08:00 · 2300 次点击
    这是一个创建于 2090 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    #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

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

    6 条回复    2019-04-07 01:34:18 +08:00
    jinqzzz
        1
    jinqzzz  
    OP
       2019-04-07 00:30:34 +08:00
    Yvette
        2
    Yvette  
       2019-04-07 00:58:52 +08:00 via iPhone   ❤️ 1
    问问题的时候应该先说出你的疑惑在哪,这样大家才好回答你,而不是抛出一个本来就正确的结果。

    我猜你可能以为 setfill 不会作用到第二行?你可以试试把代码重构成 cout.setfill(ch); cout.setw(line); 的形式,这样可能更容易理解
    jinqzzz
        3
    jinqzzz  
    OP
       2019-04-07 01:12:17 +08:00
    @Yvette 谢谢大佬,铜币感谢。确实我以为 setfill 不会作用到第二行
    我想用 setw 在第二行输出 星号 四个空格 星号,应该怎样修改呢
    Yvette
        4
    Yvette  
       2019-04-07 01:33:16 +08:00
    @jinqzzz 可以搜 reset setfill,相信你很快就能得到答案的(要用 Google,百度搜不出来)
    jinqzzz
        5
    jinqzzz  
    OP
       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
        6
    jinqzzz  
    OP
       2019-04-07 01:34:18 +08:00
    @Yvette 好的,我看下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.