C++ ofstream 输出不正确缩进

C++ ofstream output not indenting correctly

我正在将姓名和成绩输出到文件中,它需要采用特定格式。

我目前有这段代码可以写入文件

void outToFile(Student a[], ofstream& b, int c){
  b << "Student Grade Summary\n";
  b << "---------------------\n\n";
  b << "ENGLISH CLASS\n\n";
  b << "Student Name\t\t" << "Test Avg\n";
  b << "------------------------------------------------\n";
  for(int i = 0; i < c; ++i){
    if(a[i].course == "E"){
        b << a[i].first << " " << a[i].last << "\t\t" << a[i].avg << "\t";
        if(a[i].avg >= 90)
            b << "A\n";
        else if(a[i].avg >= 80)
            b << "B\n";
        else if(a[i].avg >= 70)
            b << "C\n";
        else if(a[i].avg >= 60)
            b << "D\n";
        else if (a[i].avg < 60)
            b << "F\n";
        else
            b << "\n";
    }
  }
}

将其写入 txt 文件

Student Grade Summary
---------------------

ENGLISH CLASS

Student Name        Test Avg
------------------------------------------------
Marvin Dipwart      86.5    B
Axelrod Polinski        61.9    D
James T. Kirk       79.6    C

如您所见,缩进是错误的,我需要它才能全部对齐。 我该如何解决这个问题?

您想连接名字和姓氏,并指定组合的宽度,如下所示:

b << std::setw(30) << (a[i].first + " " + a[i].last) << "\t" << a[i].avg;