Tôi đang cố gắng viết vectơ tăng gấp đôi thành tệp nhị phân. Sau khi làm điều này tôi muốn đọc nó. Điều này dường như không hoạt động. Đây là mã:Viết vector <double> vào tệp nhị phân và đọc lại lần nữa
ofstream bestand;
vector<double> v (32);
const char* pointer = reinterpret_cast<const char*>(&v[0]);
size_t bytes = v.size() * sizeof(v[0]);
bestand.open("test",ios::out | ios::binary);
for(int i = 0; i < 32; i++)
{
v[i] = i;
cout << i;
}
bestand.write(pointer, v.size());
bestand.close();
ifstream inlezen;
vector<double> v2 (32);
inlezen.open("test", ios::in | ios::binary);
char byte[8];
bytes = v2.size() * sizeof(v2[0]);
inlezen.read(reinterpret_cast<char*>(&v2[0]), bytes);
for(int i =0; i < 32; i++){
cout << endl << v2[i] << endl;
}
này kết quả đầu ra "0 1 2 3 0 0 0 ......" vì vậy có vẻ như nó đọc 4 số đầu tiên một cách chính xác.
Đối số kích thước 'write()' là không chính xác. Nó phải là 'v.size() * sizeof (double)'. – hmjd
@ K-ballo 'skipws' không áp dụng cho đầu vào chưa được định dạng. –