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

使用打印时是否可以对齐文本std::cout?我正在使用制表符,但是当单词太大时,它们将不再对齐。


Sales Report for September 15, 2010

Artist  Title   Price   Genre   Disc    Sale    Tax Cash

Merle   Blue    12.99   Country 4%  12.47   1.01    13.48

Richard Music   8.49    Classical   8%  7.81    0.66    8.47

Paula   Shut    8.49    Classical   8%  7.81    0.72    8.49


当年话下
浏览 1264回答 3
3回答

狐的传说

ISO C ++标准的实现方法是#include <iomanip>使用io机械手,例如std::setw。但是,也就是说,那些io操纵器即使是用于文本也很麻烦,并且几乎不能用于格式化数字(我假设您希望您的美元金额在小数点上对齐,具有正确的有效数字位数,等等。 )。即使对于纯文本标签,代码在第一行的第一部分也将如下所示:// using standard iomanip facilitiescout << setw(20) << "Artist"&nbsp; &nbsp; &nbsp;<< setw(20) << "Title"&nbsp; &nbsp; &nbsp;<< setw(8) << "Price";// ... not going to try to write the numeric formatting...如果您能够使用Boost库,请运行(不要行走)并使用Boost.Format库。它与标准iostream完全兼容,它为您提供了所有优点,使您可以轻松使用printf / Posix格式化字符串进行格式化,但又不会失去iostream本身的功能和便利。例如,前两行的第一部分如下所示:// using Boost.Formatcout << format("%-20s %-20s %-8s\n")&nbsp; % "Artist" % "Title" % "Price";cout << format("%-20s %-20s %8.2f\n") % "Merle" % "Blue" % 12.99;

汪汪一只猫

IO机械手是您所需要的。setw尤其如此。这是参考页上的示例:// setw example#include <iostream>#include <iomanip>using namespace std;int main () {&nbsp; cout << setw (10);&nbsp; cout << 77 << endl;&nbsp; return 0;}使用left和right操纵器可以左右对齐字段。还可以看看setfill。这是有关使用io机械手格式化C ++输出的更完整的教程。
打开App,查看更多内容
随时随地看视频慕课网APP