C++ 删除字符串后未分配要释放的指针

C++ 删除字符串后未分配要释放的指针,c++,netbeans-7,C++,Netbeans 7,我试图从文本文件中删除一个特定的单词,然后将剩余的值重写到一个新文件中。我认为错误源于以下代码: string removeWord(string r){ ifstream wordBase("WordDatabase.txt"); ofstream temp("temp.txt"); string line = ""; while(getline(wordBase,line)) { if(line != r) t

我试图从文本文件中删除一个特定的单词,然后将剩余的值重写到一个新文件中。我认为错误源于以下代码:

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");
}
string-removeWord(字符串r){
ifstream词库(“WordDatabase.txt”);
流温度(“temp.txt”);
字符串行=”;
while(getline(wordBase,line))
{
如果(行!=r)

temp代码具有未定义的行为,因为函数
removeWord()
不是
return
ing a
string
而是
string
作为其返回类型

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


如果程序的行为未定义,但与
字符串相关的代码中存在错误,并且错误消息中提到
字符串
,那么试图对程序的行为进行推理是毫无意义的。这是一个可能的原因。要更正,请将返回类型更改为
void
或返回
字符串
您已将函数返回类型声明为字符串,但未从函数中返回字符串。您到底遇到了什么错误?(另外,正如@johnheridan所指出的,您缺少返回语句或声明了错误的返回类型)。能否发布remove()和rename()的代码方法?那会有帮助的。谢谢约翰。那是个愚蠢的错误。只是做了一个星期的C++。然后先到JohnSheridan去查看。