gpt4 book ai didi

C++如何将内存中的文件流保存到另一个位置

转载 作者:行者123 更新时间:2023-11-28 02:36:25 26 4
gpt4 key购买 nike

我在内存中有常规的文本日志文件,

ofstream logfile;

它被封装在一个 Logger 类中,用一个析构函数关闭那个文件,

class Logger {
ofstream logfile;
~Logger() {
logfile.close();
}
...
}

我想做的是,在 Logger 析构函数中,将日志文件的另一个拷贝保存到另一个目录。

执行此操作的最佳方法是什么?

最佳答案

#include <iostream>
#include <fstream>

class Logger
{
private:
std::fstream logfile; //fstream allows both read and write open-mode.
std::fstream secondfile;
const char* second;

public:
Logger(const char* file, const char* second)
: logfile(), secondfile(), second(second)
{
//open for both read and write, the original logfile.
logfile.open(file, std::ios::in | std::ios::out | std::ios::trunc);
}

void Write(const char* str, size_t size)
{
logfile.write(str, size); //write to the current logfile.
}

~Logger()
{
logfile.seekg(0, std::ios::beg);
secondfile.open(second, std::ios::out); //open the second file for write only.
secondfile<<logfile.rdbuf(); //copy the original to the second directly..

//close both.
logfile.close();
secondfile.close();
}
};

int main()
{
Logger l("C:/Users/Tea/Desktop/Foo.txt", "C:/Users/Tea/Desktop/Bar.txt");
l.Write("HELLO", 5);
}

关于C++如何将内存中的文件流保存到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279148/

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