如果我想从特定的字符开始删除,而不是开始位置呢
时间: 2024-10-07 21:02:54 浏览: 8
如果你想要从文件内容中的特定字符开始删除,而不仅仅是从行首开始,你需要在读取每一行时定位到该字符,然后再确定删除范围。这里是一个修改过的版本,它会删除从给定开始字符后的所有字符,直到遇到终止字符:
```cpp
#include <fstream>
#include <iostream>
#include <string>
void delete_content_after_char(const std::string& filename, char start_char, char end_char) {
std::ifstream inputFile(filename);
if (!inputFile) {
std::cerr << "Error opening file: " << filename << std::endl;
return;
}
std::ofstream outputFile(filename, std::ios::out | std::ios::trunc); // truncate the file before writing new content
if (!outputFile) {
std::cerr << "Error creating output file: " << filename << std::endl;
return;
}
std::string line;
while (std::getline(inputFile, line)) {
size_t startIndex = line.find(start_char);
if (startIndex != std::string::npos) {
size_t nextEndIndex = line.find(end_char, startIndex + 1);
if (nextEndIndex != std::string::npos) { // 如果找到了终止字符
outputFile << line.substr(0, startIndex) << line.substr(nextEndIndex + 1); // 保留到start_char前的部分和终止char后的内容
} else { // 如果只找到start_char,但未找到end_char
outputFile << line.substr(0, startIndex); // 只保留到start_char前的内容
}
} else {
outputFile << line; // 如果没有找到start_char,直接写入原行
}
}
inputFile.close();
outputFile.close();
}
// 使用示例
int main() {
delete_content_after_char("example.txt", '(', ')');
return 0;
}
```
在这个版本中,`find()`函数用于查找指定字符,如果找到则继续寻找下一个终止字符。如果没有找到终止字符,那么仅删除从start_char以后的内容。