использование setw с пользовательскими ostream операторами

Как я делаю setw, или что-то подобное (повысьте формат?) работают с моими пользовательскими ostream операторами? setw только относится к следующему элементу, продвинутому потоку.

Например:

cout << "    approx: " << setw(10) << myX;

где myX имеет тип X, и у меня есть свое собственное

ostream& operator<<(ostream& os, const X &g) {
    return os << "(" << g.a() << ", " << g.b() << ")";
}
5
задан Neil G 12 February 2010 в 01:15
поделиться

2 ответа

Просто убедитесь, что весь ваш вывод отправляется в поток как часть того же вызова operator << . Самый простой способ добиться этого - использовать вспомогательный объект ostringstream :

#include <sstream>

ostream& operator<<(ostream& os, const X & g) {

    ostringstream oss;
    oss << "(" << g.a() << ", " << g.b() << ")";
    return os << oss.str();
}  
7
ответ дан 14 December 2019 в 04:37
поделиться

может быть так, используя функцию width :

ostream& operator<<(ostream& os, const X &g) {
    int w = os.width();
    return os << "(" << setw(w) << g.a() << ", " << setw(w) << g.b() << ")";
}
1
ответ дан 14 December 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: