2016-03-30 25 views
1

私はプロジェクトの削除セクションで電話帳プロジェクトに取り組んでいます。問題があります。ここに私の削除セクションのコードは次のとおりです。名前を変更してcppファイルを削除します

 void pbook::del(){ 
    cout<<"Enter Id(Be sure to Enter with #) or a full info of a Contact to Delete:"<<endl; 
    string ds,line,deltemp; 
    cin>>ds; 
    ifstream pb("pb.gh"); 
    while(getline(pb,line)){ 
    if (line.find(ds) != string::npos) {  
    deltemp=line; 
    continue; 
     } 
     else{ 
      fstream pbtemp("pbtemp.gh",ios::app); 
      pbtemp<<line<<endl; 
     } 

    } 
    cout<<deltemp<<" was successfully deleted !"; 
    }  

私はbptemp.ghするが、何もしremove("pb.gh")行いません削除されたものを除くすべての連絡先を書いた後、一般的な電話帳ファイルを削除しようとしています! ifstream pb("pb.gh");からfstream pb("pb.gh");に変更すると助けになると思っていましたが、その後に "pbtemp.gh"が生成されません! "pb.gh"を削除して "pbtemp.gh"の名前を "pb.gh"に変更してください。 よろしくお願いいたします。

+0

私の推測では、ファイルがまだ 'pb'によって開かれている間にファイルを削除しようとしています。ストリームを最初に閉じます。 –

+2

C++は、現在ファイルを削除する標準的な手段を提供していません。次のリリースでも利用可能になるはずです。http://en.cppreference.com/w/cpp/filesystem – NathanOliver

+0

@NathanOliver 'remove()'はどうでしょうか? –

答えて

0

まず、(const char *)を削除してエラーコードを返します。それをチェックすると、何が起こるか知ることができます。第二に、どうしてc関数の代わりにC++ライブラリを使わないのですか? boost :: filesystemを見てください(おそらく、それはC++ 16に含まれています)

関連する問題