有大量关于重载 operator<<
以模仿 toString()
风格的方法将一个复杂对象转换为字符串的信息可用。 我也有兴趣实现反向操作,即使用 operator>>
将字符串反序列化为对象。
通过检查 STL
源代码,我已经收集到:
istream &operator>>(istream &, Object &);
哪种函数签名是正确的,可以反序列化一个类型为Object
的对象。不幸的是,我一直不知道如何正确实现这个函数——特别是如何处理错误:
- 如何在流中指示无效数据?抛出异常?
- 如果流中存在格式不正确的数据,应该处于什么状态?
- 在返回操作符链引用之前,是否应重置任何标志位?