将C++源程序的注释删除并保存到另一个文件中,使用循环读写单个字符的方式完成。
时间: 2024-01-21 16:16:19 浏览: 84
以下是一个简单的实现,可以将C++源程序文件中的注释删除并保存到另一个文件中:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream inputFile("input.cpp"); // 打开输入文件
ofstream outputFile("output.cpp"); // 打开输出文件
char currentChar, nextChar;
bool isInComment = false;
while (inputFile.get(currentChar)) {
if (!isInComment) {
if (currentChar == '/') {
inputFile.get(nextChar);
if (nextChar == '/') { // 单行注释
isInComment = true;
} else if (nextChar == '*') { // 多行注释
isInComment = true;
currentChar = ' ';
} else {
outputFile << currentChar << nextChar;
}
} else {
outputFile << currentChar;
}
} else {
if (currentChar == '*' && inputFile.peek() == '/') {
isInComment = false;
inputFile.get(currentChar);
}
}
}
inputFile.close(); // 关闭输入文件
outputFile.close(); // 关闭输出文件
return 0;
}
```
这个程序使用了 `ifstream` 和 `ofstream` 类来读取和写入文件。然后它使用一个循环来逐个字符地读取输入文件中的内容,并在写入输出文件之前删除注释。
程序中使用了一个布尔变量 `isInComment` 来记录当前是否在注释中。如果没有在注释中,则程序检查是否有注释开始符号 `/`,并根据下一个字符判断注释类型。如果是单行注释 `//` 或多行注释 `/*`,则程序将 `isInComment` 设置为 `true` 并将当前字符替换为一个空格。如果不是注释,则程序将当前字符写入输出文件。
如果在注释中,则程序检查是否遇到注释结束符号 `*/`,如果是则将 `isInComment` 设置为 `false`,否则继续读取下一个字符。
最后,程序关闭输入和输出文件,并返回0。
阅读全文