我需要对5个unsigned char
向量进行分组(data_length=5
)。在每个组的结尾,我想添加一个ID组,并将它们(组数据+其ID)写入文件。其中组ID类型为integer
。我按照以下代码完成了这个任务。它正确吗?下图显示了我正在执行的操作。
#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();
此外,我想将数据提取到向量中,不包括组ID。这是我从上述文件中提取数据的代码,但它没有删除ID组。您能帮我删除它吗?
//-------------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>());
random
是一个宏?此外,我仍然投票关闭此问题,因为缺少最小但完整的示例。请删除您的问题,然后学习发布指南,再提出一个适当的问题。 - Ulrich Eckhardt