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