0

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

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*/
}
}
4

1 回答 1

4

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

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

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

于 2012-12-21T14:45:49.363 回答