包括静态数据/文本文件

Include static data/text file

本文关键字:文本 文件 数据 静态 包括      更新时间:2023-10-16

我有一个带有字符串标识符的ascii数字的文本文件(>50k行),可以将其视为数据向量的集合。根据用户输入,应用程序在运行时只需要其中一个数据向量。

据我所知,我有 3 个选项可以从此文本文件中获取信息:

  1. 将其保留为文本文件,在运行时提取所需的向量。我相信缺点是代码中不能有相对路径,因此用户必须指向文件的正确位置(?)。或者,让配置脚本将绝对路径注入为宏。
  2. 使用 xxd 将其转换为静态无符号字符(如此处所述),然后包含生成的文件。缺点是 5MB 文件变成了 25MB 的包含文件。我认为这 25MB 在运行时期间加载到内存中是否正确?
  3. 将其转换为对象并使用 objcopy 链接,如此处所述。这似乎使文件大小大致相同 - 还有其他权衡吗?

是否有标准/推荐的方法?如果这有所作为,我可以使用 C 或 C++。

谢谢。

(在带有 gcc 的 Linux 上运行)

我会使用数字 1 并将文件路径作为参数传递到程序中。这样做没有错,而且简单明了。

你应该看看这里的答案:

正在运行的程序目录

投票最高的答案为您提供了如何处理数据文件的胶水。但是,我建议将其保存在/usr/share 下,而不是主文件夹,如链接中所述。

我倾向于使用 zlib(两种方式都是可能的:side 文件或包含在压缩数据中)。