使用文件内容作为硬编码字符串
Use file content as hardcoded string
我正在寻找一种将文件内容用作硬编码字符串常量的简单方法。
当然,我可以将文件内容复制/粘贴到define
中,但这需要我将放在每行的末尾和每个
"
的前面。
我试图使用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
但我想在没有额外的预构建步骤的情况下做到这一点。
编辑:如何将文件嵌入可执行文件? 重点介绍嵌入二进制文件。我只想将文本文件的内容用作硬编码字符串。 建议的方法对于我想做的事情来说太重了。
最简单的方法是将内容复制粘贴到头文件/实现文件中,但作为原始字符串文字,即
constexpr const char *fileContent = R"~(FILE_CONTENT_GOES_HERE)~";
// begin raw literal: ^^^^ ^^^ end raw literal
您应该将FILE_CONTENT_GOES_HERE
替换为文件的未修改内容。请注意,分隔符(此处:~
(可以选择不同的方式,有关详细信息,请参阅此处。
原始字符串文字是 C++11 的一项功能,可让您免于转义任何内容(引号、换行符等(。请注意,对于 C++17,您可能希望有选择地将字符串文本绑定到std::string_view
实例和/或将变量声明为inline
。
相关文章:
- 是否有任何区域设置会影响宽字符编码?
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 使用C++将越南语字符从ISO88591、UTF8、UTF16BE、UTF16LE和UTF16编码为十六进制,反之亦然
- 将二进制编码的无符号字符转换为整数
- 如何C++ WCOUT UTF-16 编码的字符数组?
- 字符编码和带有C++的文件名
- 如何在没有wchar_t的情况下在 c++ 中解码/编码 UTF-8 字符
- 如何定义一个从任何编码空间解析单个字符的精神 x3 解析器?
- C 14:UTF-8/UTF-16与本机字符编码之间的转换
- qt base64编码/decode添加逃脱字符
- 比较UTF8编码的字符
- 从键盘读取 UTF-8 编码的字符
- 如何获取 json 文件的字符编码类型
- 哪种方法更适合霍夫曼编码 我想读取字符及其频率
- Base64 在编码特殊字符时不起作用
- 编码一个字符
- 将数字编码为字符并写入文件
- 字符编码独立字符交换
- 为什么使用中文代码页集的Windows控制台可以显示UTF-16编码的字符
- C++编码(特殊字符 Ø,é...)