Gần đây tôi đã gặp sự cố khi tạo chuỗi chuỗi do thực tế rằng tôi đã giả định không đúng std :: setw() sẽ ảnh hưởng đến chuỗi cho mỗi lần chèn, cho đến khi tôi thay đổi nó một cách rõ ràng. Tuy nhiên, nó luôn luôn không được đặt sau khi chèn.Những người thao túng iomanip nào 'dính'?
// 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'
Vì vậy, tôi có một số câu hỏi:
- Tại sao setw() theo cách này?
- Có người thao túng nào khác theo cách này không?
- Có sự khác biệt về hành vi giữa std :: ios_base :: width() và std :: setw() không?
- Cuối cùng có tài liệu tham khảo trực tuyến ghi rõ hành vi này? Tài liệu nhà cung cấp của tôi (MS Visual Studio 2005) dường như không hiển thị rõ ràng điều này.
Một vòng làm việc là ở đây: http://stackoverflow.com/a/37495361/984471 –