包括静态数据/文本文件

时间:2012-08-10 11:39:33

标签: c++ c compilation

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

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

  1. 将其保留为文本文件,在运行时提取所需的向量。我相信缺点是你不能在代码中有一个相对路径,所以用户必须指向文件的正确位置(?)。或者,获取configure脚本以将绝对路径注入宏。
  2. 使用xxd将其转换为静态无符号字符(如here所述),然后包含生成的文件。缺点是5MB文件变成25MB包含文件。我是否认为这25MB在运行时间内被加载到内存中?
  3. 按照objcopy所述,使用here将其转换为对象和链接。这似乎保持文件大小大致相同 - 还有其他权衡吗?
  4. 是否有标准/推荐的方法来执行此操作?如果这有所不同,我可以使用C或C ++。

    感谢。

    (使用gcc在linux上运行)

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

你应该看看这里的答案:

Directory of running program

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

答案 2 :(得分:0)

我更喜欢使用zlib(两种方式都是可能的:辅助文件或包含压缩数据)。