Tôi có một số std::vector<int>
và tôi muốn tuần tự hóa dữ liệu đó. Với mục đích này, tôi đang cố gắng sử dụng một std::stringstream
Làm cách nào để sao chép dữ liệu nhị phân sang một chuỗi
vector<int> v;
v.resize(10);
for (int i=0;i<10;i++)
v[i]=i;
stringstream ss (stringstream::in | stringstream::out |stringstream::binary);
Tuy nhiên khi tôi sao chép các vector đến stringstream bản sao này nó như là nhân vật
ostream_iterator<int> it(ss);
copy(v.begin(),v.end(),it);
giá trị mà đưa vào để đệm (_Strbuf) là "123456789 "
tôi sucssesed để viết một giải pháp workaround
for (int i=1;i<10;i++)
ss.write((char*)&p[i],sizeof(int));
tôi muốn làm điều đó một cái gì đó giống như cách thứ nhất bằng cách sử dụng chức năng std như bản sao
nhờ Herzl
Tôi thích cách tiếp cận này nói chung, nhưng thường là lỗi để bộ nhớ đầu ra mù quáng như thế này. Bạn vẫn cần phải viết một cái gì đó mà có thể tuần tự đúng từng loại. –
Hoàn toàn đồng ý. Tôi sẽ không bao giờ sử dụng mã như vậy trong sản xuất. Tôi muốn sử dụng chu trình "for" được đề cập ở trên :-) – Stas