Saya baru-baru ini mengalami masalah saat membuat stringstream
karena fakta bahwa saya salah mengasumsikan std::setw()
akan memengaruhi aliran string untuk setiap penyisipan, sampai saya mengubahnya secara eksplisit. Namun, itu selalu tidak disetel setelah penyisipan.
// 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'
Jadi, saya punya sejumlah pertanyaan:
- Kenapa
setw()
begini? - Apakah ada manipulator lain seperti ini?
- Apakah ada perbedaan perilaku antara
std::ios_base::width()
danstd::setw()
? - Terakhir, apakah ada referensi online yang dengan jelas mendokumentasikan perilaku ini? Dokumentasi vendor saya (MS Visual Studio 2005) tampaknya tidak menunjukkan ini dengan jelas.