C++ ostream 填充添加尾随 0

C++ ostream fill adding a trailing 0

您好,我在使用 C++ 中的 ostream 对象格式化我的输出时遇到问题。

ostream& write(ostream& os)
{
    os << os.fill('*') << os.width(10);
    return os;
}

这是输出的样子:

********* 0

我正在努力实现 10 * 秒而没有尾随 0

尾随 0 的原因是什么?

我是否错误地使用了宽度和填充函数?

正如 ios::base::width 中所说:

Return value : The value of the field width before the call.

所以你正在做的是 fill 你的 ostream*s 然后在调用之前打印字段的值是 0.

还有一件事你可能没有注意到,在 0 之前你有另一个字符,那是因为 std::ios::fill return 值 :

Return value : The value of the fill character before the call.

试试这个:

ostream& write(ostream& os)
{
    os.fill('*');
    os.width(10);
    return os;
}