使用for循环格式化C ++

时间:2014-01-21 16:25:52

标签: c++ format

我正在经历一个for循环,我希望我的输出看起来像这样:

apples_fuji      18.93    31.99
apples_gala      25.34    27.62
apples_jazz      16.77    36.73
apricots         17.92    22.22
bananas          25.87    18.63
cherries         16.30    78.40
grapes_red       15.62    41.86
grapes_white     23.06    86.94
pears_anjou      26.35    28.72
pears_bosc       12.03    15.52
plantains        16.35    23.54
watermelon       14.33    32.82

totals          228.87   444.99

不幸的是,它看起来像这样

apples_fuji            18.93  31.9917
apples_gala            25.34  27.6206
apples_jazz            16.77  36.7263
apricots            17.92  22.2208
bananas            25.87  18.6264
cherries            16.3  78.403
grapes_red            15.62  41.8616
grapes_white            23.06  86.9362
pears_anjou            26.35  28.7215
pears_bosc            12.03  15.5187
plantains            16.35  23.544
watermelon            14.33  32.8157
totals 228.87 444.987

其中第一个col是所有字符串,后两个是int。格式化它的最佳或最简单方法是什么?由于字符串长度不同,我遇到了一些麻烦

int num;
int total_amount, tote_amount, tote_price;

for (int i=0; i < num; i++)
   cout << string "        " << num1 << " " << num2 <<endl;

cout << "totals"< < "    " << tote_amount << " " << tote_price <<endl;

2 个答案:

答案 0 :(得分:4)

如果你的字符串有最大长度,你可以使用

std::cout << std::setw(max_length) << std::setfill(' ') << left << value << ...

答案 1 :(得分:1)

  

如果你的琴弦有最大长度,你可以使用
  std :: cout&lt;&lt; std :: setw(max_length)&lt;&lt; std :: setfill('')&lt;&lt;左&lt;&lt;值&lt;&lt; ......

如果你不知道最大长度,你可以在之前做这样的事情(在C ++ 11中):

int maxLength = std::max_element(begin(names), end(names), 
                                 [](std::string const & a, std::string const & b) { return a.length() < b.length(); })->length();