0

我正在尝试创建特殊字符“=”的 ling

我想要的输出

Name====================
Horace Horsecollar    56.00  12.50  700.00  210.00  10  480.00
Eleven Thirty         34.00  12.50  425.00  127.50  10  287.50
Victoria Elven        34.00  12.50  425.00  127.50  10  287.50

但是这里的输出是用“=”填充输出中的所有空格

我得到的输出

Name
==Horace Horsecollar====56.00  12.50  700.00  210.00  10  480.00
Eleven Thirtyman======34.00  12.50  425.00  127.50  10  287.50
Victoria Elven========34.00  12.50  425.00  127.50  10  287.50

Employees.push_back(new Employee("Horace Horsecollar", 56, 12.5));
Employees.push_back(new Employee("Eleven", 34, 12.5));
Employees.push_back(new Employee("Victoria Elven", 34, 12.5));

代码

cout << "Name" << setw(20) << setfill('=') << endl;

for (vector<Employee *>::iterator i = Employees.begin(); i < Employees.end(); i++) {
  cout << (*i)->getName() 
  
  << setw(27 - ((*i)->getNamesize()) ) << fixed << setprecision(2) 
  << (*i)->getHoursWorked() 
  << "  " << (*i)->getHourlyRate() 
  << "  " << (*i)->getGrossPay()
  << "  " << (*i)->getTaxes()
  << "  " << 10
  << "  " << (*i)->getNetPay() << "\n";

我真的很困惑,关于 cout 的一些东西我不明白,但我不知道它是什么。

4

2 回答 2

0

您需要将格式化程序放在文本之前。










cout << setw(21) << setfill('=') << left << "Name" << setfill(' ') << endl;

关键字表示以下left文本将在 21 个字符列的左侧排列。填充字符将在右侧。

这也适用于打印名称的循环的第一部分。整个要点setw()是您不需要处理列中数据的长度。

for (vector<Employee *>::iterator i = Employees.begin(); i < Employees.end(); i++) {
  cout << setw(22) << left << (*i)->getName() 
       << fixed << setprecision(2) << (*i)->getHoursWorked() 
       << "  " << (*i)->getHourlyRate()
       << "  " << (*i)->getGrossPay()
       << "  " << (*i)->getTaxes()
       << "  " << 10
       << "  " << (*i)->getNetPay() << "\n";
}

在这里,名称将放在 22 个字符列的左侧。setfill(' ')由于在 Name 标题后调用 to ,其余空间被空格占用。

于 2020-12-30T07:20:22.077 回答
0

感谢评论,他们真的帮了大忙

我在行尾缺少一个“=”以使其完整

cout << "Name" << setw(17) << setfill('=') << "=" << setfill(' ') << endl;

输出

Name=================
Horace Horsecollar    56.00  12.50  700.00  210.00  10  480.00
Eleven Thirty         34.00  12.50  425.00  127.50  10  287.50
Victoria Elven        34.00  12.50  425.00  127.50  10  287.50
于 2020-12-30T06:37:54.140 回答