2015-04-22 109 views
0

我输出文件的名称和成绩,它需要以特定格式输出。C++ 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" << "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 

正如你所看到的缩进是错误的,我需要它的所有行向上。 我该如何解决这个问题?

+1

这是因为第二个名字是更长的时间。只需添加固定数量的选项卡不会使其排列齐整。您应该使用不同的输出格式,例如CSV或使用固定宽度的列来填充空格。 – developerbmw

回答

0

你想连接第一和最后一个名称,并指定组合的宽度,这样的事情:

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