我正在尝试从文本文件中删除特定单词,然后将剩余的值重写为新文件。我相信错误来自这里的代码:
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");
}
有人可以帮帮我吗?非常感谢!
答案 0 :(得分:2)
代码具有未定义的行为(由John Sheridan指出)函数removeWord()
不是return
string
而是 a { {1}}作为返回类型。来自 6.6.3 c ++ 11标准(草案n3337)的返回语句,第2节:
...从函数末尾流出相当于没有值的返回;这会导致值返回函数中的未定义行为。
尝试推断具有未定义行为的程序的行为是毫无意义的,但是如果错误消息中提到了与string
和string
相关的代码中存在错误,则可能的原因。要更正,请将返回类型更改为string
或返回void
。