The*_*own 7 c++ operator-overloading ostream sstream
我有一个C++类MyObject,我希望能够像对待osstream一样提供这些数据(但与直接sstream不同,将传入数据格式化为特殊方式).我似乎无法弄清楚如何为MyObject重载操作符来吃掉给它的输入.
class MyObject {
public:
ostringstream s;
FEEDME
};
int main() {
MyObject obj;
obj.FEEDME << "Hello" << 12345;
// I want obj.s == ":Hello::12345:"
}
Run Code Online (Sandbox Code Playgroud)
我想要它所以喂入的每个项目被包围:
所以在给定的例子中,s =":Hello :: 12345"应该是最终的结果.我的问题是,我怎么能告诉对象什么时候<<something,把:贴在东西周围.
这可能吗?
Eva*_*ran 10
试试这个:
class MyObject {
public:
template <class T>
MyObject &operator<<(const T &x) {
s << ':' << x << ':';
return *this;
}
std::string to_string() const { return s.str(); }
private:
std::ostringstream s;
};
MyObject obj;
obj << "Hello" << 12345;
std::cout << obj.to_string() << std::endl;
Run Code Online (Sandbox Code Playgroud)
有些事情你将无法推入流中,但它应该适用于所有基础知识.
| 归档时间: |
|
| 查看次数: |
5716 次 |
| 最近记录: |