用C ++格式化Cout输出

时间:2012-05-02 21:25:59

标签: c++

这是预期的输出:

COUNT | WORD 
------+------
   1  | .3
   1  | .3.4
   1  | 3
   2  | 12.34
   1  | test1.12.34
   3  | this

这是我正确的代码:

std::cout << "COUNT | WORD" << '\n';
std::cout << "------+------" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  std::setw(3) << ".3" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  std::setw(3) << ".3.4" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  std::setw(3) << "3" << '\n';
std::cout << std::setw(4) << "2" << std::setw(3) << '|' <<  std::setw(3) << "12.34" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  std::setw(3) << "test1.12.34" << '\n';
std::cout << std::setw(4) << "3" << std::setw(3) << '|' <<  std::setw(3) << "this" << '\n';

不幸的是,我的ouput弄乱了WORD

COUNT | WORD
------+------
   1  | .3
   1  |.3.4
   1  |  3
   2  |12.34
   1  |test1.12.34
   2  |this

有谁能建议我解决这个问题。感谢

3 个答案:

答案 0 :(得分:2)

而不是

std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  std::setw(3) << ".3" << '\n';

对于每一行,在&#39; |&#39;之后添加一个空格。字符:

std::cout << std::setw(4) << "1" << std::setw(3) << "| " <<  std::setw(3) << ".3" << '\n';

答案 1 :(得分:2)

为什么不是这个::

std::cout << "COUNT | WORD" << '\n';
std::cout << "------+------" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  ' ' << ".3" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  ' ' << ".3.4" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  ' ' << "3" << '\n';
std::cout << std::setw(4) << "2" << std::setw(3) << '|' <<  ' ' << "12.34" << '\n';
std::cout << std::setw(4) << "1" << std::setw(3) << '|' <<  ' ' << "test1.12.34" << '\n';
std::cout << std::setw(4) << "3" << std::setw(3) << '|' <<  ' ' << "this" << '\n';

答案 2 :(得分:0)

这样做会设置左侧填充字符。

cout.fill('-');
cout.width(40);
cout<< "LINE1" <<endl;

cout.fill('-');
cout.width(40);
cout<< 3 <<endl;

cout.fill('-');
cout.width(40);
cout<< 3.4 <<endl;

cout.fill('-');
cout.width(40);
cout<< "TEST " << 12.34 <<endl;