c++ - 我如何从 C++ 文件中找到一个字符串并使用以下字符串删除它?

标签 c++ ofstream

如何在文件中查找字符串?在我的代码中,我想在文件中找到一个人的名字。并执行评论中的操作。这是我的代码:

int main(){
size_t found;
ofstream myfile;
cout << "Enter the name you wish to delete." << endl;
getline(cin, name);
myfile.open("database.dat");
found=myfile.find(name);
if (found!=string::npos){
    number = myfile.tellg();
    /*Delete current line and next line*/
}
}

最佳答案

你想修改文件,还是在阅读时跳过这两行?

实际上,两者的解决方案是一样的,因为从文件中间删除数据需要读取之后的所有内容并用偏移量重写(就像从数组中间删除一个元素一样)。

因此,将整个文件读入内存,除了您确定需要删除的任何行(跳过那些行)。之后,将幸存的行写回磁盘。使用一个临时文件作为最后一步移动到原始名称可能是个好主意,这样如果您的进程中止,数据就不会被破坏。

关于c++ - 我如何从 C++ 文件中找到一个字符串并使用以下字符串删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992130/

相关文章:

c++ - Boost -gd 库文件

c++ - 函数不能用作 'constexpr' 函数

c++ - 如何更改 protobuf 日志记录行为(分隔符)?

c++ - 无法在 C++ 中创建包含日期和时间的文件名

c++ - 如何在纹理映射过程后合并两个 .obj 文件?

c++ - 人们是否能够使用自己的实现来劫持已编译的库?

c++ - 写入变量文件名

c++ - 使用 ofstream 创建一个位图文件有一个奇怪的输出

c++ - 如何确定 std::ofstream 打开的文件的当前大小?

c++ - 奇怪的文件输出 C++