C ++ ostream fill添加尾随0

时间:2018-04-17 02:29:28

标签: c++ ostream setw

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

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

这是输出的样子:

********* 0

我正在尝试在没有尾随*的情况下实现10 0 s。

尾随0的原因是什么?

我是否正确使用宽度和填充功能?

1 个答案:

答案 0 :(得分:3)

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

  

返回值:调用前字段宽度的值。

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

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

  

返回值:调用前填充字符的值。

试试这个:

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