如何使用我的用户定义的ostream运算符设置setw或类似的东西(boost格式?)? setw仅适用于推送到流的下一个元素。
例如:
cout << " approx: " << setw(10) << myX;
myX的类型是X,我有自己的
ostream& operator<<(ostream& os, const X &g) {
return os << "(" << g.a() << ", " << g.b() << ")";
}
答案 0 :(得分:7)
确保将所有输出作为同一个operator<<
调用的一部分发送到流中。实现此目的的直接方法是使用辅助ostringstream
对象:
#include <sstream>
ostream& operator<<(ostream& os, const X & g) {
ostringstream oss;
oss << "(" << g.a() << ", " << g.b() << ")";
return os << oss.str();
}
答案 1 :(得分:1)
可能是这样使用width函数:
ostream& operator<<(ostream& os, const X &g) {
int w = os.width();
return os << "(" << setw(w) << g.a() << ", " << setw(w) << g.b() << ")";
}