【发布时间】:2016-01-12 06:59:30
【问题描述】:
我必须将 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>());
【问题讨论】:
-
如果这段代码有效,那么我想你应该在代码审查部分询问它。
-
不要解释发生了什么问题,而是提供观察结果。您的问题不清楚。
-
@MehrdadMomeny 问题的前半部分不清楚它是否有效。第二部分肯定没有按预期工作,所以此时Code Review 不合适。另外,我们不是“部分”:p
-
@Zak LOL,是的,section 不是正确的术语。 :)
-
为什么
random是一个宏?此外,我仍然投票结束这个话题,因为缺少最小但完整的示例。请删除您的问题,然后研究发布指南,然后提出正确的问题。
标签: c++ file visual-studio-2013