如何删除在C ++中使用setw时创建的多余空间?

问题描述 投票:1回答:1

我正在尝试使用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++;

Current Program Output

((目前正在弄乱那些setw值,因此请不要理会它们当前未与标题对齐)

c++ formatting format output alignment
1个回答
0
投票

如果将std::internal添加到std::cout语句中,它将抽出剩余的空间,然后您可以执行新的setw。对于您来说,这可能比制表符更好,特别是如果您不使用等宽字体。请参见this answer.中的示例。请确保setw足够大以容纳您最大的单词...并且不执行using namespace std,这是不正确的做法。你太无耻了! ;)

© www.soinside.com 2019 - 2024. All rights reserved.