在将数据写入文件之前确定数据的大小
C++ determining size of data before writing it to a file
我将一些数据序列化到这样的文件:
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.
谢谢。
我以前也有过这样的经历。
我采用的方法是先写一个4字节的占位符,然后写数据,然后用fseek()返回占位符来写长度。
- 向文件中写入一个4字节的占位符
- ftell()获取当前文件位置
- 将数据写入文件
- ftell()获取新位置
- 计算长度:两个ftell()值之间的差值
- 然后fseek()返回占位符并写入长度。
为每个ByteFeature
写入52个unsigned char
到一个文件。所以你写的总字节数是52 * nByteFeatures.Contents().size()
,假设一个字符等于一个字节
相关文章:
- C++数据文件、数组和计算赋值
- 数据文件的第二行未正确读取
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- 将数据文件读入结构 C++
- 引入流时C++数据文件未正确读取?
- 如何在数据文件中查找和显示内容
- 如何处理错误"E1696命令行错误:无法在Visual Studio 2017中打开元数据文件"mscorlib.dll"?
- 尝试读取数据文件,存储在数组中并打印所有元素,但它不起作用
- 将数据文件读入对象数组时出现问题
- C :数据文件有错误:预期的无限制ID
- C 和 C++:带有错误"Expected unqualified-id"的数据文件
- 如何在C 中读取一系列数据文件
- 从数据文件中读取每2个字节,并在向量中进行比较
- 写入单个大数据文件或多个小文件:哪个更快?
- 在读取数据文件时,如何找到用户字符串输入的字谜?
- 保护外部数据文件免受未经授权的修改
- C 读取数据文件
- C 如何将数据文件读取到结构或向量以及返回结构或向量
- 具有挑战性的数据文件格式,需要将其读取为包含类对象的数组的VAR
- C 中的Google单元测试:如何编写持久数据文件