C++流输出不正确缩进

C++流输出不正确缩进,c++,file-io,ofstream,C++,File Io,Ofstream,我把名字和成绩输出到一个文件,它需要以一种特定的格式 我目前有此代码要写入文件 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" <<

我把名字和成绩输出到一个文件,它需要以一种特定的格式

我目前有此代码要写入文件

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";
    }
  }
}
正如你所看到的,缩进是错误的,我需要它全部对齐。
我该如何解决这个问题?

您想将名字和姓氏连接起来,并为组合指定一个宽度,如下所示:

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

那是因为第二个名字更长。简单地增加固定数量的标签并不能让它排成一行。您应该使用不同的输出格式,例如CSV,或者使列的宽度固定,并使用空格填充。
b << std::setw(30) << (a[i].first + " " + a[i].last) << "\t" << a[i].avg;