Son zamanlarda, açıkça değiştirinceye kadar, stringstream
yanlış bir şekilde std::setw()
her ekleme için dize akışını etkileyeceğini varsaydığım için bir sorun yarattım. Ancak, yerleştirme işleminden sonra her zaman ayarlanmamıştır.
// 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'
Bir kaç sorum var:
- Neden
setw()
bu şekilde? - Bu şekilde başka manipülatörler var mı?
- Arasındaki davranış fark var mı
std::ios_base::width()
vestd::setw()
? - Son olarak, bu davranışı açıkça belgeleyen çevrimiçi bir başvuru var mı? Satıcı belgelerim (MS Visual Studio 2005) bunu açıkça göstermiyor gibi görünüyor.