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

ファイルを変更しますか、それとも読み取り中にこれらの 2 行を単にスキップしますか?

実際、ファイルの途中からデータを削除するには、その後のすべてを読み取り、オフセットを使用して再書き込みする必要があるため (配列の途中から要素を削除するのと同じように)、解決策は同じです。

そのため、削除する必要があると判断した行を除いて、ファイル全体をメモリに読み込みます (それらはスキップしてください)。その後、残った行をディスクに書き戻します。プロセスが中止された場合にデータが破壊されないように、最終ステップとして元の名前に移動される一時ファイルを使用することをお勧めします。

于 2012-12-21T14:45:49.363 に答える