我正在尝试使用 setw 格式化文件的输出但没有成功。我知道我的输出是根据它前面变量的字符长度而变化的,但是我不知道如何更改我的代码,以便每一行都独立于它前面的行打印。 (请看图片链接)
由于“Swimming”一词比所有其他词类型都长,这会改变这些列的信息,使报告看起来很糟糕。此外,“金额”列中的逗号似乎也在改变输出。
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 值,所以请忽略它们目前不与标题对齐)
编辑:将我在 VS 中的字体更改为 Helvetica,因为 Consolas 伤害了我的眼睛,这也影响了我的 .dat 的输出,所以基本上这不是问题。哎呀。
最佳答案
如果您将 std::internal
添加到您的 std::cout
语句中,它将抽出剩余的空间,您可以执行一个新的 setw
之后。这可能比制表符更适合您,尤其是在您不使用等宽字体的情况下。请参阅 this answer. 中的示例确保您的 setw
足够大以容纳您最大的单词...并且不要使用 using namespace std
,这是不好的做法。你太无耻了! ;)
关于c++ - 如何删除在 C++ 中使用 setw 时创建的额外空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172010/