Там имеется масса информации о перегрузке operator<<
, чтобы имитировать метод toString()
-style, который преобразует сложный объект в строку. Я также заинтересован в реализации обратного, operator>>
для десериализации строки в объект.
Проверяя источник STL
, я понял, что:
istream &operator>>(istream &, Object &);
будет правильной сигнатурой функции для десериализации объекта типа Object
. К сожалению, я был в недоумении, как правильно это реализовать - в частности, как обрабатывать ошибки:
- Как указать недопустимые данные в потоке? Выбросить исключение?
- В каком состоянии должен быть поток, если в потоке есть искаженные данные?
- Должны ли какие-либо флаги reset перед возвратом ссылки на цепочку операторов?