std::cout での出力フォーマット指定に関して教えてください。

cout.flag( ios::uppercase | ios::hex ) やら cout << setfill('0') とか
cout << scientific << setprecision(10) とかとか
大半の指定が 1回 数値 を出力した後も その状態が保持されたままなのに
cout << setw(24) による出力幅指定は その都度指定しないと忘れてしまう挙動になっています。

その都度指定する必要は他にもあるのか。それと、
http://www.cplusplus.com/reference/iomanip/setw/
みたいな仕様を見て、どう読み取ればそれが正しい挙動であると分かるのか教えてほしいです。
ある個人ブログには setfill も毎回出力する度に指定する必要があるのだと書かれていましたが、
自分の環境では setfill は状態が保持されました。