2015-04-22 158 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;