c++ - 删除注释的 C++ 程序

标签 c++ parsing

我正在尝试创建一个程序,它接受一个 C++ 代码的文本文件并输出另一个 包含该代码的文件,减去它包含的任何注释。

假设rFile和wFile定义如下:

ifstream rFile; // File stream object for read only
ofstream wFile; // File stream object for write only

rFile.open("input.txt", ios::in);
wFile.open("output.txt", ios::out);

我的第一个想法是简单地浏览文本并做相当于笔的操作( Logo 引用)当(稍微改进的)peek() 识别/* 并在看到 */时落笔。当然之后 seeing//它会“起笔”直到它到达\n。

这种方法的问题在于 output.txt 不包含任何 原始空格或换行符。

这是代码(在这个阶段我什至没有尝试删除注释):

while (!rFile.eof())
{
rFile>>first;  //first is a char
wFile<<first;
}

然后我尝试使用 getline() 分别获取每一行代码,然后添加 wFile 的结尾。它到目前为止有效,但让事情变得更复杂,更少 优雅且代码可读性差。

所以,我想知道是否有人对我有任何指示。 (没有双关语的意思!)

注意这是我收到的更大的家庭作业的一部分,我 限于仅使用 C++ 函数而不是 C 函数。

最佳答案

更新:

其他人提到过这个,但我认为get可能是比“>>”更好用的函数。

原帖:

解决方案是逐个字符地读取输入,而不是使用 getline()

可以用“>>”读取字符,用“<<”输出。这样你就不必使用“endl”了。行终止符和空格字符将作为单独的字符读入。

当您看到评论的开始时,您可以停止输出字符,直到您吃掉适当的评论终止符。

在处理“//”标记的末尾时,您还需要确保将“\r\n”视为单个终止符。

关于c++ - 删除注释的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023608/

相关文章:

c++ - 编译cyanoboot : No rule to make target

c++ - C++中的“expression must have class type”错误

c++ - Visual Studio 2010 中与 .dll 关联的错误

Python 帮助 - 解析数据包日志

c++ - 如何从 C++ 中的 pgm 文件中读取数据

Perl 解析 - 字符、制表符和空格的混合

html - 查找和替换 HTML 标签

c++ - MinGW 4.7.1 无法识别命令行选项 -static-libstdc++

c++ - Qt/C++ 中的反射

c - 使用 sscanf - C 将缓冲字节解析为整数