gpt4 book ai didi

C++ : passing ofstream& to function to continually append to . txt 文件

转载 作者:行者123 更新时间:2023-11-28 04:57:15 24 4
gpt4 key购买 nike

我正在为类编写一个程序,其中我需要从“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com