私は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";
}
クラスemployeeには、printemployeeメソッドがあります。
void printEmployee() const
{
cout << fixed;
cout << surname << setw(10) << empNumber << "\t" << setw(4) << hourlyRate << "\n";
}
問題は、「フリントストーン」の行を印刷すると、従業員番号とレートが並んでいないことです。このようなことが起こります:
Stone 43 35.750000 Rubble 163 12.000000 Flintstone 97 15.750000 Pebble 104 10.250000 Rockwall 15 22.750000
誰か助けてもらえますか? (タブを追加しようとしましたが、役に立ちませんでした)
Print employeeメソッドのクラスemployee:この行を使用して印刷します。
cout << setw(20) << left << surname << setw(10) << left << empNumber << setw(4) << hourlyRate << endl;
「<< left
」を追加するのを忘れました。これは、左揃えにする場合に必要です。
お役に立てば幸いです。
幅を設定する必要があります前名前を印刷して、その後に他のものを並べます。この一般的な順序に関する何か:
cout << left << setw(15) << surname
<< setw(10) << empNumber << "\t"
<< setw(4) << hourlyRate << "\n";
私は(少なくとも通常は)固定幅のフィールドとタブを混在させようとしないようにします。一般に、幅を使用して物を揃える方が簡単です。