我是boost::iostream
内存映射文件的新手,我在理解这些类时遇到了一些困难。
我希望我的函数能够创建一个新的内存映射文件用于写入和读取。我的写作部分很成功,但我不知道如何读回这些值。
阅读文档,看起来参数和类mapped_file_params::mode
都被忽略了。mapped_file_source
mapped_file_sink
可能我想使用它,因为它是我想使用的流seekg
和read
.
如果这是不可能的,我还能使用什么?可以使用mapped_file_sink::data()
回读吗?
在我的代码下面
namespace bip = boost::iostreams;
bio::mapped_file_params prm("data.out");
prm.new_file_size = 256; // in reality it will be bigger.
prm.mode = std::ios::in | std::ios::out;
bio::stream<bio::mapped_file_sink> ooo;
ooo.open(bio::mapped_file_sink(prm));
char AA;
AA = 'A';
ooo.write(&AA,1);
AA = 'B';
ooo.write(&AA,1);
char BB;
bio::seek(ooo,0,BOOST_IOS::beg);
ooo.read(&BB,1); // this fails
cout << B << endl;