c++ - 获取字符串流的适当大小,以便我可以将其放入缓冲区

标签 c++ boost stringstream

这里是一些示例代码

std::stringstream ss;
boost::archive::binary_oarchive oa(ss);
oa << newMat;
int size = ss.tellp();
void* matBin = malloc(size);
memcpy(matBin,ss.str().c_str(), size);

基本上,我试图将一些矩阵和二进制数据存储到数据库中。这段代码应该将矩阵转换为二进制数据(不用担心 boost 存档的细节),我正在尝试将数据存储到缓冲区中。但是,我不确定 ss.tellp() 是否是确定二进制数据大小的正确方法。

谁能确认这是否是确定 ss 大小的正确方法?

谢谢!

最佳答案

像这样

int size = ss.str().size();

但我看不出为什么 tellp 不能正常工作。

关于c++ - 获取字符串流的适当大小,以便我可以将其放入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114848/

相关文章:

c++ - 有没有办法减少 ostringstream malloc/free 的?

c++ - 指向成员函数怪异的指针

c++ - WinAPI CreateWindow 函数创建小于设置的窗口

c++ - 我应该尽可能使用#ifndef Q_MOC_RUN 吗?

c++ - 使用 Boost.Spirit.Lex 和流迭代器

c++ - boost::condition_variable - 将 wait_for 与谓词一起使用

c++ - C++ 中的身份字符串流

c++ - 在什么情况下,单例设计模式可能会生成同一个单例类的多个实例?

C++:从子对象到父对象的信息传播

c++ - 从字符串读入字符串流