我不确定如何更好地排好这个问题。我想通过使用L = name.length();
并从setw
中减去它会排得更好但是没有。我已正确设置name
和ID
,但我似乎无法将其余部分排成一行。这些是floats
btw。
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;
我试图让它更像这样......
这就是我所拥有的......
答案 0 :(得分:0)
将setw(30-L)
替换为setw(30)
。这个:
int L = name.length();
不需要。如果要右对齐数字,请使用std::right
。
使用比例字体在nodepad中打开输出文件的接缝。您不会看到与比例字体对齐的列,即使它们是。将字体更改为固定或输入您的终端type output.txt
。