格式化表格显示的最佳方法?

时间:2018-08-04 23:58:28

标签: c++

我正在练习C ++技能,并且正在编写一个“员工薪资信息”程序,该程序显示员工的姓名,薪资,地址等信息。这是我的布局:

===== Employee Test Information ====================================================
| Name: Emily Rodgers                           Hire Date: 06/10/2017              |
| Address: 1055 Testing Ave., Madison WI                                           |
| Current Pay: $27.30                           Hourly?: Yes                       |
| Email: emily.rodgers@usbank.com                                                  |
====================================================================================

如果输入更多/更少的文本,则不会更改:

===== Employee Test Information ====================================================
| Name: George Williams                         Hire Date: 12/10/2017              |
| Address: 21704 Fleming Rd., Madison WI                                           |
| Current Pay: $24.70                           Hourly?: Yes                       |
| Email: george.williams@usbank.com                                                |
====================================================================================

处理这种问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

iomanip 标头中找到几个操纵器,您可能会发现它们有用:

setw -此操纵器用于以特定列数输出表达式的值。用法示例:

    std::cout << setw(5) << expression;

这将“表达式”输出到5个字符的列。因此,在您的示例中,您将信息分为两个主要信息列。找出这两个主要栏中的每个栏中可以容纳多少个字符。然后,您将使用 setw 操纵器来确保您的数据填充该列。您知道标签的时长,因为它们是恒定的,所以您所要做的就是使用 setw 操纵器,将其作为标签长度与主标签总长度的差柱。对第二列信息执行相同的操作。用两个 setw 调用执行一行输出。示例:

#include <iomanip>    
std::cout << setw(5) << expression1 << setw(10) << expression2 << std::endl;
std::cout << setw(5) << expression3 << setw(10) << expression3 << std::endl;

只要每一行的格式都相同,输出应显示在列中。

您可能会在报告中发现有用的其他操纵器:

setfill(ch)-用字符 ch 填充空白。

left -设置左侧对齐方式。

right -设置右侧对齐方式。

更多信息,请访问https://docs.microsoft.com/en-us/cpp/standard-library/iomanip