gpt4 book ai didi

c++ - 从硬盘读取数据并将其放入 C++ 容器中

转载 作者:行者123 更新时间:2023-11-28 03:00:14 25 4
gpt4 key购买 nike

我写了一个简单的线程,它的任务只是从硬盘读取数据,将其放入容器中并用时间戳和唯一 Id 标记。之后,我会将新结构化的数据写入内存映射文件。

问题是我不关心数据的内部结构,我的意思是它可以是 Wav 格式(因为在实际情况下我将处理一些平均每个 3 mb 的音频数据)bu我不会对该数据进行任何操作。将它插入我的结构后,我将只处理 UniqueId 和数据标签。示例结构类似于:

Struct SampleData 
{
long UniqueID;
... MyData; // the data which I am trying to read from hard drive
Time insertionTime;
}

所以问题是我如何在不知道(因为我不需要)它的内部结构的情况下将 Wav 数据读入这个结构?例如,... 部分是什么。有大数据 block 的容器类型吗?

要读取数据,我可以使用 ifstream 或任何其他方法吗?

最佳答案

尽量保持TLV格式:
http://en.wikipedia.org/wiki/Type-length-value

编辑:一个非常简单的 TLV 容器。

您将能够按原样存储原始数据,并且知道您正在读取哪个字段以及它的大小。

class TlvContainer
{
public:
unsigned long Type; // Maybe we have billions of types of objects?
unsigned long Size; // The size of the object.
unsigned char* Bytes; // This will hold the raw data.
};

当您将数据写入文件时,您必须知道它有多少字节,分配“Bytes”数组并更新“Size”字段。
当你从文件中读取它时,你就会知道你是如何写入它的。(你必须按照写入它们的相同顺序读取字段。)

比如你写成:Type, Size, Bytes:
您将首先从文件中读取 sizeof(unsigned long) 以了解元素的类型。
然后你需要阅读另一个 sizeof(unsigned long) 来知道你的真实数据有多大。
然后您将能够从文件中读取“大小”字节,知道在它们之后有一个以相同方式构建的新元素。

关于c++ - 从硬盘读取数据并将其放入 C++ 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com