Recentemente ho avuto un problema nella creazione di uno stringstream a causa del fatto che ho assunto erroneamente che std :: setw() avrebbe influenzato lo stringstream per ogni inserimento, finché non l'ho modificato esplicitamente. Tuttavia, è sempre disinserito dopo l'inserimento.Quali manipolatori iomanip sono "appiccicosi"?
// 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'
Così, ho una serie di domande:
- Perché setw() in questo modo?
- Esistono altri manipolatori in questo modo?
- C'è una differenza di comportamento tra std :: ios_base :: width() e std :: setw()?
- Infine c'è un riferimento online che documenta chiaramente questo comportamento? La documentazione del mio fornitore (MS Visual Studio 2005) non sembra mostrare chiaramente questo.
Un ciclo di lavoro è qui: http://stackoverflow.com/a/37495361/984471 –