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 而是astring作为其返回类型。来自第6.6.3节c++11 标准(草案 n3337)的 return 语句,第 2 节:

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

尝试推理具有未定义行为的程序的行为是没有意义的,但鉴于与 a 相关的代码中存在错误,string并且string在错误消息中提到这是一个可能的原因。要更正,请将返回类型更改为void或返回一个string.

于 2013-07-11T10:46:46.383 回答