Recientemente tuve un problema al crear un stringstream debido a que asumí incorrectamente que std :: setw() afectaría el stringstream para cada inserción, hasta que lo cambie explícitamente. Sin embargo, siempre se desactiva después de la inserción.¿Qué manipuladores iomanip son 'pegajosos'?
// 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'
lo tanto, tengo una serie de preguntas:
- ¿Por qué es setw() de esta manera?
- ¿Hay algún otro manipulador de esta manera?
- ¿Hay una diferencia en el comportamiento entre std :: ios_base :: width() y std :: setw()?
- Finalmente, ¿hay una referencia en línea que documente claramente este comportamiento? La documentación de mi proveedor (MS Visual Studio 2005) no parece mostrar esto claramente.
Una ronda de trabajo es aquí: http://stackoverflow.com/a/37495361/984471 –