How do I use iomanip's setw, setfill, and left/right? Setfill isn't stopping its output
41,040
Solution 1
How about:
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";
}
Solution 2
sj0h's answer is great except the titles don't quite line up. To fix it I started the title line with "left" and "setw", I also had to end with "endl" instead of "\n".
std::cout << std::left << std::setw(20) << "size" << std::setw(20) << "time" << std::setw(20) << "time2" << std::endl;
std::cout << std::setfill('-') << std::setw(60) << "-" << std::endl;
run = 10;
std::cout << std::setfill(' '); //fill with spaces
for(int i = 0; i < 10; 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] << std::endl;
}
Author by
user3448821
Updated on March 03, 2021Comments
-
user3448821 about 3 years
I'm trying to get my output to look like this:
size time1 time2 ------------------------------- 10 4 8 100 48 16 1000 2937 922 10000 123011 3902 100000 22407380 830722
And I know I need to use
setw()
,setfill()
, andleft
. However, my attempts keep giving me incorrect output. Here is one example of my code: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"; }
And here's the output:
size time1 time2 ------------------------------------------------------------ 103-------------------13------------------ 100171-----------------199----------------- 100013183---------------667----------------- 10000670130--------------8205---------------- 10000014030798-------------1403079888---------
I've tried changing the order that I'm using
setw()
,setfill()
, andleft
, but I'm just flying blind right now. I've also searched iomanip tutorials. I'm following the directions--as far as I can tell--but I'm still not getting it.How do I stop the
setfill()
from running over? How do I justify left but usesetw()
to stop the numbers from running into each other?