为了账号安全,请及时绑定邮箱和手机立即绑定

打印cout <<时的C ++对齐

打印cout <<时的C ++对齐

C++
当年话下 2019-10-26 13:40:58
使用打印时是否可以对齐文本std::cout?我正在使用制表符,但是当单词太大时,它们将不再对齐。Sales Report for September 15, 2010Artist  Title   Price   Genre   Disc    Sale    Tax CashMerle   Blue    12.99   Country 4%  12.47   1.01    13.48Richard Music   8.49    Classical   8%  7.81    0.66    8.47Paula   Shut    8.49    Classical   8%  7.81    0.72    8.49
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

ISO C ++标准的实现方法是#include <iomanip>使用io机械手,例如std::setw。但是,也就是说,那些io操纵器即使是用于文本也很麻烦,并且几乎不能用于格式化数字(我假设您希望您的美元金额在小数点上对齐,具有正确的有效数字位数,等等。 )。即使对于纯文本标签,代码在第一行的第一部分也将如下所示:


// using standard iomanip facilities

cout << setw(20) << "Artist"

     << setw(20) << "Title"

     << setw(8) << "Price";

// ... not going to try to write the numeric formatting...

如果您能够使用Boost库,请运行(不要行走)并使用Boost.Format库。它与标准iostream完全兼容,它为您提供了所有优点,使您可以轻松使用printf / Posix格式化字符串进行格式化,但又不会失去iostream本身的功能和便利。例如,前两行的第一部分如下所示:


// using Boost.Format

cout << format("%-20s %-20s %-8s\n")  % "Artist" % "Title" % "Price";

cout << format("%-20s %-20s %8.2f\n") % "Merle" % "Blue" % 12.99;


查看完整回答
反对 回复 2019-10-26
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

IO机械手是您所需要的。setw尤其如此。这是参考页上的示例:


// setw example

#include <iostream>

#include <iomanip>

using namespace std;


int main () {

  cout << setw (10);

  cout << 77 << endl;

  return 0;

}

使用left和right操纵器可以左右对齐字段。


还可以看看setfill。这是有关使用io机械手格式化C ++输出的更完整的教程。


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 1262 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信