Saya baru-baru ini mengalami masalah saat membuat stringstreamkarena 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.