2013-03-28 13 views
5

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

:私は完全に整列そこの列を印刷したいと思いますが、今のところ、私はそれを行うことはできませんが、ここに私のコードがある

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

問題ときです私はemp番号とレートが並べられていない行を "flinstones"行を印刷します。次のようなことが起こります。

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

誰かが私を助けることができますか? (私はタブを追加しようとしましたが、助けにはなりませんでした)

+2

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

答えて

18

印刷従業員方法の従業員クラス: この行を使用して印刷します。

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

"<< left"を追加していません。これは、左揃えにする場合に必要です。

希望します。

+1

ええ、それは私が逃した左のものだったと思います。ご協力ありがとうございました! – mikey

5

の前にを印刷すると、それ以降の行を整理するために名前をプリントアウトする必要があります。

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

固定幅のフィールドとタブを混在させないでください(少なくとも通常は)。一般に、幅を使って物を整列させるほうが簡単です。

関連する問題