最近、明示的に変更するまで、挿入ごとに文字列ストリームに影響を与えるstringstream
と誤って想定していたため、作成に問題がありました。std::setw()
ただし、挿入後は常に設定が解除されます。
// With timestruct with value of 'Oct 7 9:04 AM'
std::stringstream ss;
ss.fill('0'); ss.setf(ios::right, ios::adjustfield);
ss << setw(2) << timestruct.tm_mday;
ss << timestruct.tm_hour;
ss << timestruct.tm_min;
std::string filingTime = ss.str(); // BAD: '0794'
だから、私はいくつかの質問があります:
- なぜ
setw()
このようになっているのですか? - この方法で他のマニピュレータはありますか?
- との動作に違いは
std::ios_base::width()
ありstd::setw()
ますか? - 最後に、この動作を明確に文書化したオンラインリファレンスはありますか?私のベンダーのドキュメント(MS Visual Studio 2005)は、これを明確に示していないようです。