gpt4 book ai didi

c++ - 如何打开用于读取和写入的升压 iostream 内存映射

转载 作者:行者123 更新时间:2023-11-30 04:09:12 27 4
gpt4 key购买 nike

我是 boost::iostream 内存映射文件的新手,我在理解这些类时遇到了一些困难。

我希望我的函数创建一个新的内存映射文件用于写入和读取。我的写作部分成功了,但我不知道如何回读这些值。

阅读文档,它看起来像 mapped_file_params::mode 参数被 mapped_file_sourcemapped_file_sink 类忽略。

可能我想使用它,因为它是一个流,因为我想使用 seekgread

如果这不可能,我还能使用什么?使用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;

最佳答案

mapped_file_sink 是只写的 - 这就是它忽略模式参数的原因。 mapped_file_source 是只读的。要读取和写入,请使用 mapped_file

关于c++ - 如何打开用于读取和写入的升压 iostream 内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com