Меня недавно укусил тот факт, что ios_base :: width
и / или setw
манипулятор должны быть сброшены при каждом написании элемента в поток .
То есть вы должны сделать это:
while(whatever)
{
mystream << std::setw(2) << myval;
}
Вместо этого:
mystream.width(2);
while(whatever)
{
mystream << myval;
}
Хорошо, хорошо.
Но кто-нибудь знает, почему было принято это проектное решение? Есть ли какое-то обоснование, которое мне не хватает, или это просто темный угол стандарта?
Другие модификаторы форматирования потока (как указано в связанном вопросе SO) являются «липкими», а setw
нет.