我正在尝试使用setw格式化文件的输出,但没有成功。我知道我的输出是根据变量之前的字符长度移动的,但是我不知道如何更改代码,以便每一行都将独立于其之前的行进行打印。 (请参阅图片链接)
由于“游泳”一词比其他所有词种都长,这会移动这些列的信息,使报告看起来很糟糕。此外,“金额”列中的逗号似乎也在转移输出。
fout << s.getID()
<< right << setw(11) << addCommas(s.getAmount()) << "\t"
<< left << setw(14) << s.getType() << "\t"
<< left << setw(14) << s.getLength() << "\t"
<< left << setw(10) << s.getDate() << " "
<< left << setw(15) << s.getFname() << "\t"
<< s.getLname() << endl;
lineCount++;
((目前正在弄乱那些setw值,因此请不要理会它们当前未与标题对齐)
如果将std::internal
添加到std::cout
语句中,它将抽出剩余的空间,然后您可以执行新的setw
。对于您来说,这可能比制表符更好,特别是如果您不使用等宽字体。请参见this answer.中的示例。请确保setw
足够大以容纳您最大的单词...并且不执行using namespace std
,这是不正确的做法。你太无耻了! ;)