Часто при написании файловых пишущих или синтаксических анализаторов на c ++ я хотел бы следить за продвижением писателя / парсера по файлу при его записи / чтении. С этой целью я думал о реализации чего-то вроде:
ostream_monitor my_monitor(&my_output_stream, &cout);
my_monitor << my_variable;
Это приведет к выводу my_variable в my_output_stream, а также в cout, чтобы я мог это видеть.
Точно так же было бы неплохо иметь такую же входную версию:
istream_monitor my_monitor(&my_input_stream, &cout);
my_monitor >> my_variable;
Это будет считывать следующий токен из my_input_stream и использовать его для установки my_variable, а также выводить любые прочитанные символы в cout, чтобы я мог видеть поток по мере его чтения.
Я мог бы пойти дальше и попытаться создать подклассы std :: istream и std :: ostream, которые делают это, но, похоже, потенциально много разработки для инструмента отладки может быть или не быть полезным. Поэтому мне предлагается спросить:
Что вы делаете, чтобы отслеживать прохождение парсера через файл? Мне интересно услышать любые решения, которые кажутся более простыми для реализации, чем приведенное выше.