Я сериализация некоторых данных в файл, как это:C++ определения размера данных перед записью в файл
vector<ByteFeature>::iterator it = nByteFeatures.Content().begin();
for (;it != nByteFeatures.Content().end(); ++it)
{
for (int i = 0; i < 52; i++)
{
fwrite(&it->Features[i], sizeof(unsigned char), 1, outfile);
}
}
Но я хотел бы знать заранее, сколько байт, которые будут находиться в файле. Я хотел бы написать этот номер перед фактическими данными. Потому что в некоторых ситуациях мне придется пропустить загрузку этих данных, и мне нужно знать, сколько байтов мне нужно пропустить.
На диск записано больше данных, и для меня было бы очень важно, чтобы я мог записать количество байтов непосредственно перед фактическими данными. Я не хочу хранить это число в отдельном файле или так.
.Content.size() would only tell me how many "items" are in there, but not the actual size of the data.
спасибо.
Поскольку вы пишете 52 байта для каждого элемента, будет ли 'nByteFeatures.Content(). Size() * 52' не делать трюк? –
Почему бы не использовать 'sizeof()' в вашем типе данных, а затем умножить на '.Content.size()'? (т. е. 'sizeof (ByteFeature) * nByteFeatures.Content(). size()') – JBL
Вы всегда можете написать фиктивный размер, затем записать данные, затем 'fseek' вернуться к началу и поместить реальный размер вместо манекен. –