删除字符串后未分配被释放的指针

时间:2013-07-11 10:40:31

标签: c++ netbeans-7

我正在尝试从文本文件中删除特定单词,然后将剩余的值重写为新文件。我相信错误来自这里的代码:

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");
}

有人可以帮帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

代码具有未定义的行为(由John Sheridan指出)函数removeWord()不是return string 而是 a { {1}}作为返回类型。来自 6.6.3 c ++ 11标准(草案n3337)的返回语句,第2节:

  

...从函数末尾流出相当于没有值的返回;这会导致值返回函数中的未定义行为。

尝试推断具有未定义行为的程序的行为是毫无意义的,但是如果错误消息中提到了与stringstring相关的代码中存在错误,则可能的原因。要更正,请将返回类型更改为string或返回void