ฉันเพิ่งมีปัญหาในการสร้าง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) ดูเหมือนจะไม่แสดงสิ่งนี้อย่างชัดเจน