2012-12-15 40 views
0

我不知道如何去更好地排列這個。我認爲通過使用L = name.length();並從setw減去它會排隊更好,但沒有。我有nameID設置正確,但我似乎無法讓其餘排隊。這些是floats btw。不能得到setw排隊

for (int z=0; z<i ;z++){ 

    if(EInfo[z].valid >0){ 

    string name = employee[z].getName(); 
    int L = name.length(); 

    payReportObj << fixed << setprecision (2) << endl; 

     payReportObj << setw(3) << employee[z].getID() 
        << setw(36) 
        << employee[z].getName() 
        << setw(30-L) << "$" << setw(4) << EInfo[z].grossPaySE 
        << setw(25) << "$" << setw(4) << EInfo[z].taxSE 
        << setw(15) << "$" << setw(4) << EInfo[z].insuranceSE 
        << setw(25) << "$" << setw(4) << EInfo[z].netPaySE; 

我試圖得到它更像是這... Want I'm trying to go for

這是我... This is what I have.

+0

您能否提供您希望數據佈局方式的示例? – ctor

+3

這是一個可變寬度的字體嗎?真的嗎? – melpomene

+0

如果這確實不是等寬字體,您可以嘗試使用製表符來排列列。 – nimrodm

回答

0

更換setw(30-L)setw(30)。並且這個:

int L = name.length(); 

是不需要的。如果您想要對齊數字,請使用std::right

它使用比例字體在nodepad中打開輸出文件。即使是比例字體,也不會看到列對齊。將字體更改爲固定或輸入您的終端type output.txt