在编译代码中包含一个大的文本变量是一个好主意吗?

gla*_*man 5 c c++

我正在编写一个程序,为用户生成一个格式化文件,但它不仅生成格式化文件,它还做了更多.

我想将单个二进制文件分发给最终用户,当用户运行程序时,它将为用户生成具有适当数据的xml文件.

为了实现这一点,我想将文件内容提供给在代码中编译的char数组变量.当用户运行程序时,我将写出char文件以为用户生成xml文件.

   char*  buffers = "a xml format file contents, \
                     this represent many block text \
                     from a file,...";
Run Code Online (Sandbox Code Playgroud)

我有两个问题.

Q1.您对如何将我的文件内容编译成二进制文件有任何其他想法,即作为一个二进制文件分发.

Q2.如上所述,这是一个好主意吗?

AMA*_*nc. 9

你所描述的是迄今为止C/C++的标准.对于大量文本数据,或任意二进制数据(或实际上您可以存储在文件中的任何数据 - 例如zip文件),您可以将数据写入文件,直接将其链接到您的程序中.

可以在像这样的网站上找到一个例子


Yu *_*Hao 7

我建议使用另一个文件来包含除将数据放入二进制文件之外的数据,除非您有自己的理由.我不知道将字符串放入二进制文件的其他可移植方法,但您的解决方案似乎没问题.

但是,请注意,\在行尾使用以形成多行的字符串时,应该注意缩进,因为它们是从下一行的请求连接起来的:

char*  buffers = "a xml format file contents, \
this represent many block text \
from a file,...";
Run Code Online (Sandbox Code Playgroud)

或者你可以使用另一种形式:

char *buffers = 
         "a xml format file contents,"
         "this represent many block text"
         "from a file,...";
Run Code Online (Sandbox Code Playgroud)