【发布时间】:2018-10-04 09:45:38
【问题描述】:
我正在寻找一种将文件内容用作硬编码字符串常量的简单方法。
当然,我可以将文件内容复制/粘贴到define 中,但这需要我将\s 放在每行的末尾和每个" 的前面。
我尝试使用constexpr 让预编译器加载文件,但要么我做错了(我不熟悉constexpr),要么不可能这样做。
这是我尝试过的:
constexpr const char* loadFile()
{
std::string retVar;
std::ifstream file("filename.txt");
retVar = std::string((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
return retVar.c_str();
}
#define FILE_CONTENT = loadFile();
我得到错误:
error: body of constexpr function 'constexpr const char* loadFile()' not a return-statement
也许有人可以修改我的代码以按预期工作,或者也许有人有一种全新的方式来实现我的目标。
我知道我可以简单地编写一个脚本来读取文件的内容并将其转换为#define,但我想这样做而不需要额外的预构建步骤。
编辑: How to embed a file into an executable? 专注于嵌入二进制文件。我只想将文本文件的内容用作硬编码字符串。 建议的方法对于我想做的事情来说太重了。
【问题讨论】:
-
文件处理不能在 C++ 编译时完成。
-
@Kamil Cuk - 这太重了。我不想嵌入二进制文件。只需在编译时使用文本文件的内容。
标签: c++ g++ precompiler