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