我不知道如何才能更好地解决这个问题。我认为如果使用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;我试着让它更像这样...

这就是我所拥有的。

发布于 2012-12-15 23:13:47
用setw(30)替换setw(30-L)。还有这个:
int L = name.length();是不需要的。如果要右对齐数字,请使用std::right。
看起来你在nodepad中用成比例的字体打开了输出文件。您将不会看到列与比例字体对齐,即使它们是。将字体更改为fixed或键入终端type output.txt。
https://stackoverflow.com/questions/13891747
复制相似问题