最近,我被ios_base::width
和/或setw
操作器必须是reset with every item written to the stream困扰。
也就是说,您必须执行以下操作:
while(whatever)
{
mystream << std::setw(2) << myval;
}
而不是这样:
mystream.width(2);
while(whatever)
{
mystream << myval;
}
好的。
但是有人知道为什么要做出这个设计决定吗?
我是否缺少一些理由,或者这仅仅是标准的一个黑暗角落?
其他流格式修饰符(如链接的SO问题中所述)为“粘性”,而
setw
不是。 最佳答案
我的看法是:如果您希望将其统一应用,则始终可以执行以下操作。
int width =2;
while(whatever)
{
mystream << std::setw(width) << myval;
}
但是如果您提到它很粘,那么:
mystream.width(2);
while(whatever)
{
mystream << myval;
}
如果我想要每行不同的宽度,我必须保持设置宽度。
因此,基本上两种方法几乎都是相同的,根据我现在在做什么,我希望还是不喜欢它们。
关于c++ - setw()有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5905467/