filtrate
V2EX  ›  C

小白请问 cpp setw 函数

  •  
  •   filtrate · Apr 7, 2019 · 2767 views
    This topic created in 2599 days ago, the information mentioned may be changed or developed.

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

    #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 replies    2019-04-07 01:34:18 +08:00
    filtrate
        1
    filtrate  
    OP
       Apr 7, 2019
    Yvette
        2
    Yvette  
       Apr 7, 2019 via iPhone   ❤️ 1
    问问题的时候应该先说出你的疑惑在哪,这样大家才好回答你,而不是抛出一个本来就正确的结果。

    我猜你可能以为 setfill 不会作用到第二行?你可以试试把代码重构成 cout.setfill(ch); cout.setw(line); 的形式,这样可能更容易理解
    filtrate
        3
    filtrate  
    OP
       Apr 7, 2019
    @Yvette 谢谢大佬,铜币感谢。确实我以为 setfill 不会作用到第二行
    我想用 setw 在第二行输出 星号 四个空格 星号,应该怎样修改呢
    Yvette
        4
    Yvette  
       Apr 7, 2019
    @jinqzzz 可以搜 reset setfill,相信你很快就能得到答案的(要用 Google,百度搜不出来)
    filtrate
        5
    filtrate  
    OP
       Apr 7, 2019
    @Yvette
    ```
    cout << setw(line) << setfill(ch) << ch << endl;
    cout << ch << setw(line - 1) << setfill(' ') << ch << endl;
    ```
    再次感谢。这样写,第二行有空格了
    filtrate
        6
    filtrate  
    OP
       Apr 7, 2019
    @Yvette 好的,我看下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1403 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 17:12 · PVG 01:12 · LAX 10:12 · JFK 13:12
    ♥ Do have faith in what you're doing.