我如何使用iomanip的setw,setfill和left/right?Setfill没有停止输出

use*_*821 12 c++ setw iomanip

我试图让我的输出看起来像这样:

size       time1       time2
-------------------------------
10         4           8
100        48          16
1000       2937        922
10000      123011      3902
100000     22407380    830722
Run Code Online (Sandbox Code Playgroud)

我知道我需要使用setw(),setfill()left.但是,我的尝试一直给我不正确的输出.这是我的代码的一个例子:

std::cout << "size" << std::setw(20) << "time" << std::setw(20) << "time2\n";
std::cout << std::setfill('-') << std::setw(60) << "-" << std::endl;
run = 10;
for(int i = 0; i < 5; i++) {
    std::cout << run;
    run *= 10;
    std::cout << std::setw(20) << std::left << time1[i];
    std::cout << std::setw(20) << std::left << time2[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

size    time1    time2
------------------------------------------------------------
103-------------------13------------------
100171-----------------199-----------------
100013183---------------667-----------------
10000670130--------------8205----------------
10000014030798-------------1403079888---------
Run Code Online (Sandbox Code Playgroud)

我试过,我使用改变顺序setw(),setfill()left,但我只是盲目飞行现在.我也搜索了iomanip教程.我按照指示 - 据我所知 - 但我仍然没有得到它.

如何阻止自己setfill()跑过来?我如何证明左,但setw()用来阻止数字相互碰撞?

sj0*_*j0h 6

怎么样:

std::cout << "size" << std::setw(20) << "time" << std::setw(20) << "time2\n";
std::cout << std::setfill('-') << std::setw(60) << "-" << std::endl;
run = 10;
std::cout << std::setfill(' ');  //fill with spaces
for(int i = 0; i < 5; i++) {
    std::cout << std::setw(20) << std::left << run;  // fill the run column
    run *= 10;
    std::cout << std::setw(20) << std::left << time1[i];
    std::cout << std::setw(20) << std::left << time2[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)