Tôi phải nhóm 5 unsigned char
vectơ (data_length=5
). Vào cuối nhóm, tôi muốn thêm một nhóm ID và viết chúng (nhóm dữ liệu + ID của nó) để tập tin. Trong đó các loại ID nhóm integer
. Tôi làm nhiệm vụ đó như mã dưới đây. Nó có đúng không? Hình dưới đây cho thấy những gì tôi đang tham giaLàm thế nào tôi có thể viết vectơ <unsigned char> vào tập tin, theo sau là một số không dấu int
#define random(x) (rand()%x)
std::ofstream filewrite("abc.raw", std::ios::out | std::ofstream::binary);
unsigned int iter = 0;
unsigned int data_length=5;
unsigned int ID_data=0;
//-------------Write data-------------//
while (iter<10){
vector<unsigned char> vec_data;
for (unsigned int i=0;i<data_length;i++){
vec_data.push_back(random(256))
}
std::copy(vec_data.begin(), vec_data.end(), std::ostreambuf_iterator<char>(filewrite));
//Write ID_data after vec_data
filewrite.write(reinterpret_cast<const char *>(&ID_data), sizeof(ID_data));
ID_data++;
iter++;
}
filewrite.close();
Trong bổ sung, tôi muốn trích xuất các dữ liệu vào vector mà không có ID nhóm. Đây là mã của tôi để trích xuất dữ liệu từ tệp ở trên, nhưng nó không loại bỏ nhóm ID. Bạn có thể giúp tôi xóa nó không?
//-------------Read data-------------//
std::ifstream file("abc.raw", std::ios::binary);
// Stop eating new lines in binary mode!!!
file.unsetf(std::ios::skipws);
// get its size:
std::streampos fileSize;
file.seekg(0, std::ios::end);
fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// reserve capacity
std::vector<unsigned char> vec;
vec.insert(vec.begin(),
std::istream_iterator<unsigned char>(file),
std::istream_iterator<unsigned char>());
Nếu mã này đang làm việc, sau đó tôi đoán bạn nên yêu cầu nó trong phần Mã Review. –
Thay vì đưa ra một giải thích về những gì đang xảy ra, hãy cung cấp các quan sát. Câu hỏi của bạn không rõ ràng. –
@MehrdadMomeny Nửa đầu của câu hỏi không rõ liệu nó có hoạt động hay không. Phần thứ hai chắc chắn ** không ** hoạt động như dự định, vì vậy [codereview.se] sẽ không phù hợp vào lúc này. Ngoài ra, chúng tôi không phải là "phần": p – Kaz