其他分享
首页 > 其他分享> > 打印cout时的C对齐<<

打印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

解决方法:

ISO C标准的方法是#include< iomanip>并使用像std::setw这样的io操纵器.但是,那就是说,那些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 libraries,请运行(不要走路)并使用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;

标签:text-alignment,c,cout,stdout
来源: https://codeday.me/bug/20190916/1806623.html