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