草庐IT

ofstream

全部标签

C++ - 如何让多个线程写入一个文件

我目前正在编写一个使用线程将字符串写入文件的C++程序。我正在使用ofstream来编写这些字符串,我注意到只有一个线程可以访问该文件。所以我的问题是:有没有办法在不同的线程中使用ofstream来写入同一个文件?如果可能的话,任何例子都会很棒。如果没有,请也让我知道,一些解决这个问题的方法会很棒。我查看了以下链接,但它对我来说真的没有意义:Canmultiplethreadswriteintoafilesimultaneously,ifallthethreadsarewritingtodifferentlocations? 最佳答案

c++ - ofstream 指针的 vector

这是我的问题,我需要创建X个文件并根据不同的因素写入它们,我的解决方案是创建一个像这样的流指针vector#include#include#include#include#includevectorfiles;files.resize(SplitVec.size()-4);for(i=0;i(i);cout直到这一部分,它创建的文件都很好,后来在我写给它们的程序中,这也很好,我的问题是当我想关闭对象时,如果我使用:for(i=0;i我收到以下错误:Infileincludedfrommain.cpp:14:./methyl.h:298:error:requestformember'cl

c++ - ofstream线程安全吗?

我正在开发一个程序,它使用多个std::ifstream来读取二进制文件,一个std::ifstream用于每个线程。现在我需要知道,如果std::ofstream在Windows和Linux上写入同一个文件是线程安全的。我只使用一个std::ofstream并用于多个线程。我正在使用每个线程读取不同的block,并使用seekp()和write()将这些block写入输出文件。目前它对我有用,但它对大文件是否有问题。std::ofstream线程安全吗? 最佳答案 如果我没有误解你——不,标准库中没有任何东西是线程安全的(除了st

c++ - std::ofstream == NULL 不会为 -std=gnu++11 编译,任何解决方法?

考虑以下代码:std::ostreamfile;if(file==NULL)std::cout它在通过-std=gnu11(GCC5.2的默认值)或仅使用时完美编译gcccode.cpp-oa.out.不过,-std=gnu++11失败了:nomatchfor‘operator==’(operandtypesare‘std::ofstream{akastd::basic_ofstream}’and‘longint’)`最简单的解决方法是什么?详细信息:我必须使用std=gnu++11才能访问shared_ptr定义。此外,我的一些代码是自动生成的,修改生成器会付出合理的努力-所以我想知

c++ - 如何确定 std::ofstream 打开的文件的当前大小?

我有一个类,它有一个ofstream类型的文件流。构造函数以追加模式打开文件,所有消息始终写入文件末尾。我需要将outputFile写入某个固定大小(比如1Mb),然后我需要关闭、重命名并压缩它,然后打开一个同名的新文件。这需要在文件达到一定大小时完成。我尝试使用tellg()但在互联网上阅读资料(和this)后,我明白这不是正确的方法。由于我是C++的新手,我正在尝试找出最优化和正确的方法来获取ofstream打开的文件的准确当前大小?classLogger{std::ofstreamoutputFile;intcurr_size;Logger(conststd::stringlog

c++ - 为什么 ofstream::flush() 返回 ostream?

我想做的是:std::ofstreamoutFile(fname,std::ios::binary);//...outFile.flush();outFile.close();效果很好。但是当我尝试合并这两行时,因为flush返回了一个引用:outFile.flush().close();它给出错误提示:error:‘structstd::basic_ostream’hasnomembernamed‘close’然后我更仔细地查看了引用资料,发现它实际上返回ostreaminstreadofofstream..为什么会这样?是错误还是设计? 最佳答案

c++ - 使用记录器的基于策略的方法

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion在阅读了一篇关于基于策略的设计的文章并想自己尝试一些东西后,我花了一些时间重新设计了一个记录器类,我曾经用过基于策略的方法。部分代码:templateclassLoggerImpl:publicLoggerBase{public:LoggerImpl(constFilter&filter=Filter(),constFormatter&formatter=Formatter(),const

c++ - std::ifstream::read 或 std::ofstream::write 参数为零?

是否完全可以(=根据标准定义明确的行为)调用:mystream.read(buffer,0);或mystream.write(buffer,0);(当然不会读取或写入任何内容)。我想知道在调用这两个函数之一之前是否必须测试提供的大小是否为空。 最佳答案 是的,行为是明确定义的:两个函数都将完成未格式化输入/输出函数的Action(构造哨兵,如果设置了eofbit则设置failbit,必要时刷新绑定(bind)流),然后它们将得到对此条款:§27.7.2.3[istream.unformatted]/30Charactersareex

c++ - std::ofstream::close() 实际上做了什么?

本题:Howtoprotectlogfromapplicationcrash?把我带到了另一个-std::ofstream::close()到底做了什么?我知道它调用flush(),这是一回事。但还有什么?关闭文件实际上是什么?编辑:让我重新表述一下我的问题-在调用close()期间是否对实际文件进行了任何物理操作,还是只是std::ofstream内部清理的东西? 最佳答案 除了刷新用户空间缓冲区,即flush(),close(2)在底层文件描述符上被调用。这取决于操作系统然后会发生什么,但很可能文件占用的实际存储空间没有任何变化

C++ ostream 和 ofstream 转换

我的代码有一个ostream对象,它由各种模块累积并最终显示到控制台。我还想将这个ostream对象写入文件,但是我是否必须改用ofstream对象重写所有代码,或者有没有办法将一个转换为另一个(可能通过stringstream?)例如,我现有的许多功能看起来像ostream&ClassObject::output(ostream&os)const{os我能否使用ofstream对象作为参数调用此函数,并让该ofstream对象代替累积信息? 最佳答案 是的,你可以。这就是OO概念中称为subtypepolymorphism的要点。