我将一些数据序列化为这样的文件:
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.
谢谢。
答案 0 :(得分:4)
我必须在自己面前这样做。
我采用的方法是写一个4字节的占位符,然后写入数据,然后将fseek()写回占位符以写入长度。
答案 1 :(得分:2)
您正在为unsigned char
每个ByteFeature
写一个52 * nByteFeatures.Contents().size()
个文件。所以你写的总字节数是{{1}},假设一个字符等于一个字节。