C++文件操作需要注意的事项(C++文件相关)

static声明的函数放在main函数里时只有当main函数执行结束时才会调用static函数析构
文件open默认会在析构的时候close
以下情况写入文件会造成文件信息丢失,因为fstream也是基于缓存的,m_f<<info并不一定真正写入到文件里去只是写入到操作系统文件缓存里,文件缓存保证在当程序退出会真正写入到文件里,所以当同时OPEN同样一个文件时,调用析构时会造成只记录第一条日志后面日志丢失,调用flush()函数写入文件会造成只记录最后一条日志
在这里插入图片描述
在这里插入图片描述
将static Log log(1,“log.log”)声明放在函数体外部则能打输完整日志信息
在这里插入图片描述
当文件open的时候操作系统会产生一个指针指向文件头,所以以下两句写入语句操作系统的文件头是一样的
调用flush的时候会重新往文件头中写进行覆盖,没调用flush时会在析构时调用close的时候进行覆盖
在这里插入图片描述
不调用flush()有可能造成文件丢失,调用flush()性能也有可能造成影响
如果需要信息马上保存则需要调用flush()
静态函数调用构造与析构顺序如下:
在这里插入图片描述

发布了137 篇原创文章 · 获赞 33 · 访问量 1606

猜你喜欢

转载自blog.csdn.net/qq_39885372/article/details/103948060