如何在一个setw中包含两个>>的调用?

Cro*_*oCo 4 c++ io iomanip

拿这个最小的工作示例

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{

    cout    << setw(10) << "aaaaaaa"
            << setw(10) << "bbbb"
            << setw(10) << "ccc"
            << setw(10) << "ddd"
            << setw(10) << endl; 

    for(int i(0); i < 5; ++i){

        char ch = ' ';
        if ( i == 0 )
            ch = '%';
        cout << setw(10) << i
             << setw(10) << i << ch
             << setw(10) << i
             << setw(10) << i
             << setw(10) << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

   aaaaaaa      bbbb       ccc       ddd
         0         0%         0         0
         1         1          1         1
         2         2          2         2
         3         3          3         3
         4         4          4         4
Run Code Online (Sandbox Code Playgroud)

我想要做的是包含<< i << ch在一个字段中,setw(10)以便正确对齐列.

Yun*_*sch 5

既然我们正在查看其中任何一个,' '或者'%'您可以简单地静态计算.

cout << setw(10) << i
     << setw( 9) << i << ch
     << setw(10) << i
     << setw(10) << i
     << setw(10) << endl;
Run Code Online (Sandbox Code Playgroud)


Jam*_*Maa 3

i可能将and组合ch在一个字符串中,setw本身不会接受这种行为

试试这个片段

 cout << setw(10) << i
      << setw(10) << std::to_string(i) + ch;
Run Code Online (Sandbox Code Playgroud)

  • @CroCo 你避免这种行为的动机是什么? (2认同)