我想将我自己的对象输出到 STL 流,但具有自定义格式。我想出了这样的东西,但是因为我从来没有使用过语言环境和灌输,所以我不知道这是否有意义以及如何实现 MyFacet 和 operator<<。
所以我的问题是:这是否有意义以及如何实现 MyFacet 和 operator<< ?
以下是一个简化的示例,它向您展示了我想要做什么。
struct MyObject
{
int i;
std::string s;
};
std::ostream &operator<<(std::ostream &os, const MyObject &obj)
{
if (????)
{
os << obj.i;
}
else
{
os << obj.s;
}
}
MyObject o;
o.i = 1;
o.s = "hello";
std::cout.imbue(locale("", new MyFacet(MyFacet::UseInt)));
std::cout << o << std::endl; // prints "1"
std::cout.imbue(locale("", new MyFacet(MyFacet::UseString)));
std::cout << o << std::endl; // prints "hello"