Есть файл filename.cpp. Нужно удалить из него все комментарии. Проблема в том, что символы "//", "/*" могут быть в кавычках, то есть могут использоваться для вывода на экран, например. Соответственно, и кавычки могут быть в самих коментариях. Получается замкнутый круг, из которго я пока никак не выйду
Заведите два флажка -- "быть внутри комментария" и "быть внутри строковой константы". При начале просмотра файла оба флажка устанавливаем в FALSE.
Если встречаем слэш, то:
* если мы внутри строки, то интерпретируем как обычный символ;
* если внутри комментария, то сбрасываем флажок комментария и сам слэш в выходной файл не выводим;
* если вне строки и вне комментария, то устанавливаем флажок комментария и сам слэш опять же не выводим.
Если встречаем кавычку, то:
* если мы внутри строки, сбрасываем флажок строки;
* если внутри комментария, просто игнорируем (т.е. не выводим в выходной файл);
* если вне строки и вне комментария, то устанавливаем флажок строки.
Просмотр файла проще вести не в строковом, а в посимвольном режиме. В выходной поток отправляем очередной символ тогда и только тогда, когда мы не находимся в режиме "комментарий".
Ну там ещё чисто технические детали насчёт того, как поймать сам "слэш". И как отслеживать вложенные комментарии -- придётся вместо просто флажка ввести переменную "уровень вложенности". И как опознавать символ кавычки, если он содержится в самой строке.