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;
}