【发布时间】:2018-12-15 21:47:45
【问题描述】:
我有std::stringstream ss;,包含我想放入std::vector<unsigned char> my_vector; 的二进制数据。然后,我想使用my_vector 并用它来创建一个与ss 相同的新std::stringstream new_ss。
我已经尝试做类似于这个问题的答案的事情:
Is there a more efficient way to set a std::vector from a stream?
还有这个问题:
结束:
std::copy(std::istream_iterator<unsigned char>(ss),
std::istream_iterator<unsigned char>(),
std::back_inserter(my_vector));
然后:
std::copy(my_vector.begin(),
my_vector.end(),
std::ostream_iterator<unsigned char>(new_ss));
但是ss 和new_ss 不一样。我怀疑这个问题可能与忽略的空格有关,所以我尝试用这种方式制作向量:
std::string const& s = ss.str();
my_vector.reserve(s.size());
my_vector.assign(s.begin(), s.end());
但这并没有解决问题。
任何关于可能出错的想法或解决此问题的更好方法的建议将不胜感激。
【问题讨论】:
-
你使用
std::ios::binary构造字符串流了吗? -
拥有一个minimal reproducible example 并知道字符串的不同之处会有所帮助...(“不一样”并不是非常精确)
-
@stringstreams 来自 grain::BinaryInputArchive iarchive(ss) 并且是序列化对象的结果。
标签: c++ serialization stdvector stringstream c++-standard-library