Mir*_*rko 1 c++ operator-overloading
我需要重载<<运算符for streams以使用内置类型.对于字符串来说这不是问题,因为我只是像这样重载函数:
ostream& operator<<(ostream& os, const char* str) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为此功能是全局的,而不是成员.问题是我需要为其他基本类型(整数,浮点数等)重载<<运算符,但这些是成员函数.有没有办法可以做到这一点?我需要它不仅可以用于cout,还可以用于其他流.提前致谢.
您不应该尝试更改操作员的std::cout << 3;操作.它是标准API的一部分.如果您需要以某种格式输出哪些流操纵器无法支持,那么例如您可以编写一个小包装器:
struct MyFormatter {
MyFormatter (ostream &o) : o(o) {}
ostream &o;
};
MyFormatter &operator<<(MyFormatter &mf, int i) {
mf.o << "int(" << i << ")"; // or whatever
return mf;
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
MyFormatter mf(std::cout);
mf << 1 << "," << 2 << "," << 3;
Run Code Online (Sandbox Code Playgroud)