C++ C++;流到内存

C++ C++;流到内存,c++,stream,C++,Stream,如何创建std::ostream和std::istream对象来指向我分配和管理的内存块(我不希望流释放我的内存) 我正在考虑使用rdbuf()->pubstebuf()来修改另一个流,比如sstringstream。但是我认为stringstream使用的streambuf会在以后释放缓冲区吗 基本上,我正在尝试将一些东西序列化到共享内存中 谢谢。看看图书馆里的课程: bufferstream类提供 iostream与direct的接口 在固定大小的内存中格式化 具有缓冲保护功能的缓冲区 溢出

如何创建
std::ostream
std::istream
对象来指向我分配和管理的内存块(我不希望流释放我的内存)

我正在考虑使用
rdbuf()->pubstebuf()
来修改另一个流,比如
sstringstream
。但是我认为
stringstream
使用的streambuf会在以后释放缓冲区吗

基本上,我正在尝试将一些东西序列化到共享内存中

谢谢。

看看图书馆里的课程:

bufferstream类提供 iostream与direct的接口 在固定大小的内存中格式化 具有缓冲保护功能的缓冲区 溢出

#包括
#包括
//...
尺寸/长度=100;
auto pBuf=新字符[长度];//分配内存
struct membuf:std::streambuf//派生,因为std::streambuf构造函数受保护
{
membuf(字符*p,大小\u t大小)
{
setp(p,p+size);//设置开始-结束指针
}
size_t writed(){return pptr()-pbase();}//实际写入了多少字节?
};
membuf sbuf(pBuf,长度);//我们的缓冲对象
std::ostream out(&sbuf);//使用缓冲区的流

我对否决票很好奇。是否有人对此解决方案有问题?另请参阅:
#include <iostream>
#include <streambuf>

//...
size_t length = 100;
auto pBuf = new char[length]; // allocate memory

struct membuf: std::streambuf // derive because std::streambuf constructor is protected
{
   membuf(char* p, size_t size) 
   {
       setp( p, p + size); // set start end end pointers
   }
   size_t written() {return pptr()-pbase();} // how many bytes were really written?
};

membuf sbuf( pBuf, length ); // our buffer object
std::ostream out( &sbuf );   // stream using our buffer

out << 12345.654e10 << std::endl;
out.flush();

std::cout << "Nr of written bytes: " << sbuf.written() << std::endl;
std::cout << "Content: " << (char*)pBuf << std::endl;

//...
delete [] pBuf; // free memory