0

テキスト ファイルから特定の単語を削除し、残りの値を新しいファイルに書き直そうとしています。エラーは次のコードから発生すると思います。

string removeWord(string r){
    ifstream wordBase("WordDatabase.txt");
    ofstream temp("temp.txt");

    string line = "";
    while(getline(wordBase,line))
    {
        if(line != r)
            temp << line << endl;
    }

    temp.close();
    wordBase.close();
    remove("WordDatabase.txt");
    rename("temp.txt","WordDatabase.txt");
}

ここで誰か助けてくれませんか?高く評価!

4

1 に答える 1

2

コードには未定義の動作があります ( John Sheridanによって指摘されました) 関数removeWord()returnastring ではなくstring戻り値の型として a です。セクション6.6.3から、c++11 標準 (ドラフト n3337) の return ステートメント、句 2:

...関数の最後を流れることは、値のない戻りと同等です。これにより、値を返す関数で未定義の動作が発生します。

未定義の動作を持つプログラムの動作について推論しようとするのは無意味ですが、関連するコードにエラーがありstringstringエラー メッセージに記載されている場合、これが考えられる原因です。修正するには、戻り値の型を に変更するvoidか、 a を返しstringます。

于 2013-07-11T10:46:46.383 に答える