J'ai récemment eu un problème pour créer un stringstream
en raison du fait que j'ai supposé à tort std::setw()
affecterait le stringstream à chaque insertion, jusqu'à ce que je le change explicitement. Cependant, il est toujours désactivé après l'insertion.
// 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'
J'ai donc un certain nombre de questions :
- Pourquoi est-ce que
setw()
de cette façon ? - Y a-t-il d'autres manipulateurs de cette façon ?
- Y a-t-il une différence de comportement entre
std::ios_base::width()
ystd::setw()
? - Enfin, existe-t-il une référence en ligne qui documente clairement ce comportement ? La documentation de mon fournisseur (MS Visual Studio 2005) ne semble pas le montrer clairement.
0 votes
Un tour de travail est ici : stackoverflow.com/a/37495361/984471