如何在文件中找到字符串?在我的代码中,我想在文件中找到一个人的名字。并在评论中执行操作。这是我的代码:
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*/
}
}
答案 0 :(得分:4)
是否要修改文件,或者只是在阅读时跳过这两行?
实际上,两者的解决方案是相同的,因为从文件中间删除数据需要在此之后读取所有内容并用偏移量重写(就像从数组中间删除元素一样)。
因此,将整个文件读入内存,除了您确定需要删除的任何行(只需跳过这些行)。之后,将幸存的行写回磁盘。使用临时文件可能是一个好主意,该文件作为最后一步被移动到原始名称,因此如果您的进程被中止,数据不会被销毁。