2016-12-06 61 views
1

我需要setw()的幫助。我有這種感覺:顯示結果C++程序

void PrintRecord(PLAYER &m, ostream &cout) 
{ 

    cout << setw(3) << m.PlayerID << '\t' << m.LastName << ',' << setw(4) 
     << m.FirstName; 
    if (m.Hits > 0 || m.Walks > 0 || m.Outs > 0) 
    { 
     cout << "\t\t" << setprecision(3) << fixed << m.Hits << '\t' 
      << m.Walks << '\t' << m.Outs << '\t' << m.BattingAvg 
      << '\t' << m.OnBaseAvg << endl; 
    } 
    else 
    { 
     cout << endl; 
    } 
} 

這不是列在我的數據打印。

我要打印alighn colmns我的數據,

感謝

+2

看看cstdio的printf。它可以讓你格式化你的輸出。 – byxor

回答

1

你應該通過調用setw要打印的每個值之前設置列中的每個值相同的寬度。通常在使用setw時不需要使用'\ t'。與setprecision不同,setw不是「粘性」,因此您需要在每個打印值之前將其設置。

cout << setw(3) << m.PlayerID << setw(20) << m.LastName << ',' << setw(20) 
    << m.FirstName; 
if (m.Hits > 0 || m.Walks > 0 || m.Outs > 0) 
{ 
    cout << setw(20) << setprecision(3) << fixed << m.Hits << setw(20) 
     << m.Walks << setw(20) << m.Outs << setw(20) << m.BattingAvg 
     << setw(20) << m.OnBaseAvg << endl; 
}