作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 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/
我是一名优秀的程序员,十分优秀!