能不能结合起来,并编写成一个函数,并告诉我怎么使用
时间: 2024-10-08 21:03:15 浏览: 23
当然可以。我们可以创建一个名为`delete_file_content`的函数,结合上述所有步骤,接收文件名、起始删除字符、结束删除字符作为输入参数。以下是完整的函数示例:
```cpp
#include <fstream>
#include <string>
void delete_file_content(const std::string& filename, const std::string& start_chars, const std::string& end_chars) {
std::ifstream inputFile(filename);
if (!inputFile.is_open()) {
throw std::runtime_error("Failed to open the input file.");
}
std::streampos fileSize;
inputFile.seekg(0, std::ios::end); // 获取文件大小
inputFile.tellg(fileSize); // 存储文件大小到位置变量
inputFile.seekg(0, std::ios::beg); // 移动到文件开头
std::string content((char*) inputFile.rdbuf()->data(), static_cast<std::streamsize>(fileSize)); // 读取全部内容到字符串
inputFile.close();
size_t start = content.find(start_chars);
size_t end = content.find(end_chars);
if (start == std::string::npos || end == std::string::npos) {
throw std::runtime_error("Start or end characters not found in the file.");
}
if (end > start) { // 如果找到的范围有效
content.erase(start, end - start + 1); // 删除范围内的所有字符
}
std::ofstream outputFile(filename, std::ios::out | std::ios::trunc); // 新建空文件用于替换原有内容
outputFile.write(content.c_str(), content.size());
outputFile.close();
}
// 使用示例
int main() {
try {
delete_file_content("example.txt", "start_chars", "end_chars");
std::cout << "Content deletion successful.\n";
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << "\n";
}
return 0;
}
```
这个函数会打开文件,查找指定范围,删除内容,然后清空文件并写回新的内容。
阅读全文