我最近被这样一个事实所困扰,ios_base::width
和/或必须在每个写入流的项目时重置setw
操纵器。
也就是说,您必须这样做:
while(whatever)
{
mystream << std::setw(2) << myval;
}
而不是这样:
mystream.width(2);
while(whatever)
{
mystream << myval;
}
好的。
但是有谁知道为什么做出这个设计决定?我是否缺少一些理由,或者这只是标准的一个黑暗角落?
其他流格式修饰符(如链接的 SO 问题中所述)是“粘性的”,而setw
不是。