2013-03-28 96 views
5

Tôi đang học C++. Tôi có một vấn đề định dạng đầu ra của chương trình của tôi. Tôi muốn in có cột hoàn toàn phù hợp nhưng cho đến nay tôi không thể làm điều đó, ở đây là mã của tôi:Các cột được căn chỉnh đầu ra

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

trong nhân viên lớp tôi có phương pháp nhân viên in:

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

Vấn đề là khi Tôi in "flinstones" dòng số và tỷ lệ không được xếp hàng. một cái gì đó như thế này xảy ra:

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

Ai cũng có thể giúp tôi? (Tôi đã cố gắng thêm các tab .. nhưng không hiệu quả)

+2

http://stackoverflow.com/questions/275484/cout-formatting – Kirby

Trả lời

18

Trong nhân viên của phương thức nhân viên in: Sử dụng dòng này để in.

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

Bạn quên thêm "<< left". Điều này là bắt buộc nếu bạn muốn căn trái.

Hy vọng nó sẽ hữu ích.

+1

Vâng, tôi đoán đó là điều trái mà tôi đã bỏ lỡ. Cảm ơn sự giúp đỡ của bạn! – mikey

5

Bạn cần đặt chiều rộng trước bạn in ra tên để có những thứ khác xếp hàng sau đó. Một cái gì đó theo thứ tự chung này:

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

Tôi muốn (ít nhất là bình thường) cũng tránh cố gắng trộn các trường có chiều rộng cố định với các tab. Nó thường dễ dàng hơn để chỉ sử dụng chiều rộng để sắp xếp mọi thứ.