我正在为类编写一个程序,其中我需要从“main.cpp”多次调用一个函数,该函数将 ofstream 作为参数,并且该函数本身需要将新数据附加到 .txt 文件的末尾每次它被调用时(在这个例子中,为了简单起见,我制作了 int 类型的数据)。
发生的事情是,当该函数在 main 中被多次调用时,它只会覆盖所有内容,而不是将新数据附加到文件末尾。我知道我的程序中的其他所有内容都可以正常工作,所以我将尽可能地将它剥离到最基本的部分,这样这就不是 TL;DR。我已经包括
#include<fstream>
using namespace std;
在我所有的文件中。
这是它的要点:
在 main.cpp 中:
aClass* someClass = new aClass;
int data = 0;
...
ofstream myfile ("file.txt");
someClass->appendData(myfile, data);
...
在 aClass.h 中:
void appendData(ofstream& myfile, int data);
在 aClass.cpp 中:
void aClass::appendData(ofstream& myfile, int data){
if(myfile.is_open()){
myfile << data << "\n";
myfile.close();
}
else cout << "Couldn't open file";
}
如果有人能帮我解决这个问题,我将不胜感激。出于某种原因,他们已经一年多没有让我们接触 fstreams 了,我不确定这里的问题是什么。
最佳答案
电话
myfile.close();
在 appendData
中是不对的。 myfile
上的任何后续输出操作都将被忽略。
从那里删除它。
您可以将它添加到 main
中,但它是可选的。析构函数将调用 close()
。但是,如果您确定不再使用它来写入对象,那么调用对象上的 close()
也没有什么坏处
关于C++ : passing ofstream& to function to continually append to . txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881837/