python程序:将C++源程序的注释删除并保存到另一个文件中,使用循环读写单个字符的方式完成。
时间: 2024-01-24 08:16:43 浏览: 36
以下是Python程序实现:
```python
with open('input.cpp', 'r') as f_input:
with open('output.cpp', 'w') as f_output:
comment_flag = False # 注释标志位
for line in f_input:
i = 0 # 当前字符下标
while i < len(line):
if line[i:i+2] == '//': # 单行注释
break
elif line[i:i+2] == '/*': # 多行注释开始
comment_flag = True
i += 2
elif line[i:i+2] == '*/': # 多行注释结束
comment_flag = False
i += 2
elif not comment_flag: # 不在注释中
f_output.write(line[i]) # 写入字符
i += 1
```
程序中使用了两个文件句柄,分别为输入文件 `input.cpp` 和输出文件 `output.cpp`,通过嵌套使用 `with` 语句来确保文件操作的安全性。
在每行代码的处理中,通过一个 `comment_flag` 变量来记录是否处于注释中。当读取到 `//` 符号时,表示此行后面的内容全部为单行注释,因此直接跳出循环。当读取到 `/*` 符号时,表示此行后面的内容全部为多行注释,因此将 `comment_flag` 置为 `True` 并继续循环。当读取到 `*/` 符号时,表示多行注释结束,因此将 `comment_flag` 置为 `False` 并继续循环。当不在注释中时,将当前字符写入到输出文件中。
需要注意的是,程序中使用了双引号 `"` 来表示多个字符的字符串,例如 `"/*"` 表示由两个字符组成的字符串。此处并不是字符串的拼接,而是将两个字符连在一起构成一个新的字符串。