如何解决为什么输出提前结束该行并用 setfill 填充每个空白空间而不是用它创建一行?
我正在尝试创建一个特殊字符“=”
我想要的输出
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",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 有一些我不明白的东西,但我不知道它是什么。
解决方法
感谢您的评论,他们真的很有帮助
我在行的最后遗漏了一个“=”以使其完整
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
,
您需要在文本之前放置格式化程序。
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 个字符的列的左侧。由于在 Name 标题后调用了 setfill(' ')
,其余空间被空格占用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。