Output aligned columns

前提是你 提交于 2019-11-27 18:34:55

问题


I am learning C++. I have a problem formatting the output of my program. I would like to print there columns perfectly aligned but so far I cannot do it, here is my code:

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";
}

in the class employee I have the print employee method:

void printEmployee() const
{
    cout << fixed;
    cout << surname << setw(10) << empNumber << "\t" << setw(4) << hourlyRate << "\n";
}

Problem is when I print "flinstones" line the emp number and rate are not lined up. something like this happens:

Stone        43 35.750000
Rubble       163    12.000000
Flintstone        97    15.750000
Pebble       104    10.250000
Rockwall        15  22.750000

Can anybody help me? (I tried to add tabs.. but it didn't help)


回答1:


In the class employee of print employee method: Use this line to print.

cout << setw(20) << left << surname << setw(10) << left << empNumber << setw(4) << hourlyRate << endl;

You forgot to add "<< left". This is required if you want left aligned.

Hope it ll useful.




回答2:


You need to set a width before you print out the name to get other things to line up after that. Something on this general order:

cout << left << setw(15) << surname 
     << setw(10) << empNumber << "\t" 
     << setw(4) << hourlyRate << "\n";

I'd (at least normally) avoid trying to mix fixed-width fields with tabs as well. It's generally easier to just use widths to align things.



来源:https://stackoverflow.com/questions/15674097/output-aligned-columns

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!