在研究强制文件被尽可能快地写_commit问题,我已经看到下面的代码块在几个地方:与FD()
_commit(outputFile.rdbuf()->fd());
其中OUTPUTFILE是的std :: ofstream的对象。我基本上是做以下几点:
std::ofstream outputFile;
outputFile.write((char*)blocks, sizeof(blocks));
outputFile.flush();
_commit(outputFile.fd());
outputFile.close();
块是一个简单的char数组数组。我正在做的是写入一个char数组数组来表示一个二进制文件的内容,然后将该数组推送到文件本身。我需要尽可能快地写入文件,因为介质的可靠性不如闪存,而且停电的几率非常高。
当我尝试编译,我收到关于_commit
行代码以下错误:
error C2039: 'fd' : is not a member of 'basic_ofstream<char,struct std::char_traits<char> >'
我应该如何去获得的OUTPUTFILE文件描述符,并把它传递给_commit?
编辑:我改变了上面的代码,以反映使用ofstream.fd(),这应该是ofstream的公众成员。
看一眼'basic_filebuf'类确认它没有'fd()'成员,所以有人使用非=标准扩展。 –
我想我应该修改我的问题,只是要求获取outputFile的文件描述符并将其传递给_commit。 –
标准C++中没有这样的东西,也没有'_commit'函数。非标准扩展根据定义依赖于编译器。 –