C++写文件时主动刷新磁盘文件大小

发布时间:2023年12月18日

一.效果

如下图所示,test.log是我正在写入的文件。

二.实现

#include <fstream>
#include <io.h>
#include <iostream>
#include <stdio.h>

class OfSteamImmediately : public std::ofstream
{
public:
    OfSteamImmediately()
    {

    }
    ~OfSteamImmediately()
    {
        if (std::ofstream::is_open())
        {
            std::ofstream::close();
        }
    }

    void open(const char *path, ios_base::openmode mode = ios_base::out)
    {
        // 访问protected变量_M_file
        class MyFileBuf : public std::filebuf
        {
        public:
            FILE *file()
            {
                return _M_file.file();
            }
        };
        std::ofstream::open(path, mode);
        auto fb = std::ofstream::rdbuf();
        FILE *fp = ((MyFileBuf *)fb)->file();
     
文章来源:https://blog.csdn.net/caoshangpa/article/details/134959832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。