Как я могу получить std :: stringsteam для выравнивания десятичных разрядов по числам с плавающей запятой?

В C ++ у меня есть такой код:

float hits = 10.12;
float mins = 2.19;
std::ostringstream ss;

ss.precision(2);

ss << std::fixed << hits << "%\n"<< std::fixed << mins << "%";

std::cout << ss.str();

Который дает мне этот вывод:

10.12%
2.19%

Принимая во внимание, что вместо этого я хотел бы, чтобы выровнялись десятичные разряды:

10.12%
2.19%

Есть ли способ дополнить пробелами до десятичной дроби, чтобы иметь фиксированную ширину пробела для двух цифр перед десятичной запятой?

2

Решение

использование width установить размер столбца, а затем станд :: право чтобы оправдать вывод.

6

Другие решения

Есть setw() а также setprecision() определить выходную ширину и точность для значений с плавающей точкой. Таким образом, вы должны быть в состоянии использовать его как

ss << setw(8) << hits << "%\n"; ...

Посмотрите Вот для справки.

3

По вопросам рекламы [email protected]