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