c++ - 如何删除在 C++ 中使用 setw 时创建的额外空间?

标签 c++ formatting format output alignment

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

Current Program Output

(目前正在处理这些 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/

相关文章:

c++ - VS 2012 C++ : Can I use source instead of symbols to debug?

c++ - int* const* foo(int x);是一个有效的 C 函数原型(prototype)。你怎么 "read"这个返回类型?

html - 如何更改eclipse html格式

text - 使电子表格以人类可读的格式保存以进行版本控制

java - 组织字符串摘要?

C++ 宏和重载

html - 为什么两个行内 block 元素不在同一水平线上?

html - 将表格列的宽度与固定宽度表格中的文本相匹配 (HTML/CSS)

java - String.format 不完全工作?

c++ - 比较两个 std::lists 的内容