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