gpt4 book ai didi

c++ - 如何将二进制数据复制到字符串流

转载 作者:可可西里 更新时间:2023-11-01 15:09:33 28 4
gpt4 key购买 nike

我有一个 std::vector<int>,我想序列化它。为此,我尝试使用 std::stringstream

 vector<int> v;
v.resize(10);
for (int i=0;i<10;i++)
v[i]=i;


stringstream ss (stringstream::in | stringstream::out |stringstream::binary);

但是,当我将 vector 复制到字符串流时,将其复制为字符

ostream_iterator<int> it(ss);
copy(v.begin(),v.end(),it);

插入到缓冲区(_Strbuf)的值是“123456789”

我成功编写了一个解决方案

for (int i=1;i<10;i++)
ss.write((char*)&p[i],sizeof(int));

我想通过使用像复制这样的 std 函数来做一些类似于第一种方式的事情

谢谢赫茨尔

最佳答案

实际上,这是您的解决方法,但它可以与 std::copy() 算法一起使用。

   template<class T>
struct serialize
{
serialize(const T & i_value) : value(i_value) {}
T value;
};

template<class T>
ostream& operator <<(ostream &os, const serialize<T> & obj)
{
os.write((char*)&obj.value,sizeof(T));
return os;
}

用法

ostream_iterator<serialize<int> > it(ss);
copy(v.begin(),v.end(),it);

关于c++ - 如何将二进制数据复制到字符串流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4863790/

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