В чем дело с setw ()?

Меня недавно укусил тот факт, что ios_base :: width и / или setw манипулятор должны быть сброшены при каждом написании элемента в поток .

То есть вы должны сделать это:

while(whatever)
{
    mystream << std::setw(2) << myval;
}

Вместо этого:

mystream.width(2);
while(whatever)
{
    mystream << myval;
}

Хорошо, хорошо.

Но кто-нибудь знает, почему было принято это проектное решение? Есть ли какое-то обоснование, которое мне не хватает, или это просто темный угол стандарта?

Другие модификаторы форматирования потока (как указано в связанном вопросе SO) являются «липкими», а setw нет.

16
задан Community 23 May 2017 в 11:45
поделиться