Как использовать setw, setfill и left/right от iomanip? Setfill не останавливает вывод
Я пытаюсь заставить мой вывод выглядеть так:
size time1 time2
-------------------------------
10 4 8
100 48 16
1000 2937 922
10000 123011 3902
100000 22407380 830722
и я знаю, что мне нужно использовать setw()
, setfill()
и left
. Тем не менее, мои попытки продолжают давать мне неправильный результат. Вот один пример моего кода:
std::cout << "size" << std::setw(20) << "time" << std::setw(20) << "time2n";
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";
}
и вот результат:
size time1 time2
------------------------------------------------------------
103-------------------13------------------
100171-----------------199-----------------
100013183---------------667-----------------
10000670130--------------8205----------------
10000014030798-------------1403079888---------
Я попытался изменить порядок, который я использую setw()
, setfill()
и left
, но я просто вслепую прямо сейчас. Я также искал учебники iomanip. Я следую направления-насколько я могу судить - но я все еще не понимаю.
как остановить setfill()
от переезда? Как я могу оправдать левый, но использовать setw()
прекратить цифры от втречаться?
2 ответов
Как насчет:
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";
}
ответ sj0h велик, за исключением того, что названия не совсем совпадают. Чтобы исправить это, я начал строку заголовка с "left" и "setw", мне также пришлось закончить "endl"вместо" \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;
}