C++;ostream fill添加尾部0 你好,我在C++中使用OFASH对象来格式化输出。 ostream& write(ostream& os) { os << os.fill('*') << os.width(10); return os; }

C++;ostream fill添加尾部0 你好,我在C++中使用OFASH对象来格式化输出。 ostream& write(ostream& os) { os << os.fill('*') << os.width(10); return os; },c++,ostream,setw,C++,Ostream,Setw,我试图在没有尾随0的情况下获得10个*s 尾随0的原因是什么 我是否错误地使用了宽度和填充功能 如中所述: 返回值:调用前字段宽度的值 因此,您要做的是用*s填充您的ostream,然后打印调用前字段的值,即0 还有一件事您可能没有注意到,在0之前,您有另一个字符,这是因为返回值: 返回值:调用前填充字符的值 试试这个: ostream& write(ostream& os) { os.fill('*'); os.width(10); return os;

我试图在没有尾随
0
的情况下获得10个
*
s

尾随
0
的原因是什么

我是否错误地使用了宽度和填充功能

如中所述:

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

因此,您要做的是用
*
s
填充
您的
ostream
,然后打印调用前字段的值,即
0

还有一件事您可能没有注意到,在
0
之前,您有另一个字符,这是因为返回值:

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

试试这个:

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

它不是尾随的0吗?突击测验:第1部分:以下表达式的值是什么:
os.fill(“*”)
,此表达式的计算结果是什么。第2部分:如果使用重载的
@NickyC Yes编写此表达式的值,会发生什么情况。@SamVarshavchik我会尝试一下。或者,使用I/O操纵器而不是直接调用流方法:
return os@RemyLebeau实际上这是一个更好的主意,如果你把它作为答案贴出来,我会投你一票。只是为了确保我的回答是正确的。通过执行os@Devin Yes,这样您就不会将它们的返回值添加到您的
ostraem
。他们只是做他们的工作,他们的回报价值将被忽略。
ostream& write(ostream& os)
{
    os.fill('*');
    os.width(10);
    return os;
}