2015-09-14 3 views
1

Ok, так что я должен сделать программу с выходом, который выглядит следующим образом:выравнивание вправо и влево, не зная строку ширины

Gross Amount: ............... $3575.00 
Federal Tax: ................ $ 536.25 
State Tax: .................. $ 125.13 
Social Security Tax: ........ $ 205.56 
Medicare/Medicaid Tax: ...... $ 98.31 
Pension Plan: ............... $ 178.75 
Health Insurance: ........... $ 75.00 
Net Pay: .................... $2356.00 

Левые строки фиксированной и я просто набрать тех, кто, но итоговые значения справа являются переменными. Мне нужно найти способ сделать это там, где переменные справа всегда заданы вправо, но нет способа рассказать о ширине (сколько цифр в сумме) переменной, поскольку это зависит от пользователя. Все ответы, которые я видел, всегда рассматривают так, как будто вы знаете, насколько это будет. Вот пример:

cout << setw(5) << right << x << endl; 

Каждый я нахожу имеет ряд там такие, как пять, но проблема в том, я не знаю, за то ширина будет пять. Я хочу подтолкнуть переменную вправо независимо от ее ширины. Кроме того, у меня уже есть пространство имен std; закодировано, поэтому нет необходимости в std :: и я кодировал #include, поэтому вместо sout() вместо cout.width()

----------- UPDATE ----- -----

Я понял! Спасибо, парни!

+0

Обычно вы устанавливаете максимальное значение верхней границы. У вас есть какие-либо указания на максимальное количество цифр, которое нужно ожидать? В противном случае, я полагаю, вы всегда можете вычислить его самостоятельно –

+0

вам нужно сделать два прохода через данные. один раз, чтобы выяснить максимальную длину строки, необходимую, а затем еще один проход для вывода –

+1

Можете ли вы подождать, пока не получите все значения перед их печатью? – Galik

ответ

0

Что вы хотите - манипуляторы регулировки поля. Это позволяет как левое, так и правое обоснование.

Существует три возможных параметра: внутренний, левый и правый.

Например:

станд :: cout.width (10); std :: cout < < std :: right < < v < < '\ n';