我正在学习C++.我在格式化程序输出时遇到问题.我想打印完全对齐的列,但到目前为止我不能这样做,这是我的代码:
int main()
{
employee employees[5];
employees[0].setEmployee("Stone", 35.75, 053);
employees[1].setEmployee("Rubble", 12, 163);
employees[2].setEmployee("Flintstone", 15.75, 97);
employees[3].setEmployee("Pebble", 10.25, 104);
employees[4].setEmployee("Rockwall", 22.75, 15);
printEmployees(employees, 5);
return 0;
}
// print the employees in my array
void printEmployees(employee employees[], int number)
{
int i;
for (i=0; i<number; i++) {
employees[i].printEmployee();// this is the method that give me problems
}
cout << "\n";
}
Run Code Online (Sandbox Code Playgroud)
在班级员工中我有print员工方法:
void printEmployee() const
{
cout << fixed;
cout << surname << setw(10) << empNumber << "\t" << setw(4) << hourlyRate << "\n";
}
Run Code Online (Sandbox Code Playgroud)
问题是当我打印"flinstones"行时,emp数和速率没有排成一行.这样的事情发生了:
Stone 43 35.750000 Rubble 163 12.000000 Flintstone 97 15.750000 Pebble 104 10.250000 Rockwall 15 22.750000
有谁能够帮我?(我试图添加标签..但它没有帮助)
AB *_*lim 20
在打印员工方法的班级员工:使用此行打印.
cout << setw(20) << left << surname << setw(10) << left << empNumber << setw(4) << hourlyRate << endl;
Run Code Online (Sandbox Code Playgroud)
你忘了添加" << left".如果要左对齐,则需要这样做.
希望它有用.
您需要在打印名称之前设置宽度,以便在此之后排列其他内容.关于这个一般订单的东西:
cout << left << setw(15) << surname
<< setw(10) << empNumber << "\t"
<< setw(4) << hourlyRate << "\n";
Run Code Online (Sandbox Code Playgroud)
我(至少通常)避免尝试将固定宽度字段与制表符混合.通常使用宽度来对齐事物通常更容易.