【问题标题】:Incorporating text files in applications?在应用程序中加入文本文件?
【发布时间】:2009-04-08 17:40:54
【问题描述】:

我是否可以将一个相当大的文本文件(大约 700KB)合并到程序本身中,这样我就不必将文本文件一起发送到应用程序目录中?这是我第一次尝试做这样的事情,我不知道从哪里开始。

非常感谢您的帮助(:

【问题讨论】:

    标签: c++ file import text-files


    【解决方案1】:

    根据您所在的平台,您很可能能够将文件嵌入到某种资源容器中。

    如果您在 Windows 平台上编程,那么您可能需要查看资源文件。您可以在此处找到基本介绍:

    http://msdn.microsoft.com/en-us/library/y3sk7e6b.aspx

    这里有更多详细信息:

    http://msdn.microsoft.com/en-us/library/zabda143.aspx

    【讨论】:

    • +1 用于系统资源处理。在 MacOS 上,请考虑为您的应用程序使用 .app 表单。在 *nix 系统上,在你的框架中寻找资源处理程序:其他人可能已经完成了这项工作......
    【解决方案2】:

    查看 xxd 命令及其 -include 选项。您将在 C 格式文件中获得一个缓冲区和一个长度变量。

    【讨论】:

      【解决方案3】:

      如果您能弄清楚如何使用资源文件,那将是首选方法。

      将文本文件转换为可由编译器直接编译的文件并不难。这可能仅适用于小文件 - 您的编译器可能对单个字符串的大小有限制。如果是这样,一个微小的语法更改将使它成为一个可以正常工作的较小字符串的数组。

      您需要通过在顶部添加一行、将每一行括在引号中、在每行末尾放置一个换行符、转义文本中的任何引号或反斜杠以及在末尾添加一个分号来转换文件.您可以编写一个程序来执行此操作,也可以在大多数编辑器中轻松完成。

      This is my example document:
      "Four score and seven years ago,"
      can be found in the file c:\quotes\GettysburgAddress.txt
      

      将其转换为:

      static const char Text[] =
      "This is my example document:\n"
      "\"Four score and seven years ago,\"\n"
      "can be found in the file c:\\quotes\\GettysburgAddress.txt\n"
      ;
      

      这会产生一个变量 Text ,其中包含一个包含文件全部内容的字符串。它之所以有效,是因为之间只有空格的连续字符串被连接成一个字符串。

      【讨论】:

      • 如果你从来没有这样做过,现在就去做。然后不要在生产环境中使用它。但它是如此廉价和简单的代码生成介绍,没有理由不尝试它。
      • 我从来没有对文本文件做过这个,但我已经为中等大小的数据表做过。
      • @Mark:我以为你已经尝试过了,该指令是针对 OP 的。顺便说一句,我可能不应该强调上面的“不要”。凡事适度。总之,不错的总结。
      • 这将花费太多时间,因为该文件有大约 5k 行文本,带有引号和其他内容。所以我可能会尝试使用资源。感谢您的帮助'(:
      • @Ahmed:不要编辑文件!你是一名程序员,你编写了一个工具来为你编辑它。这就是重点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2011-02-25
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多