【问题标题】:Is there a way to read content of C++ raw string literal from non C/C++ file?有没有办法从非 C/C++ 文件中读取 C++ 原始字符串文字的内容?
【发布时间】:2019-04-04 06:45:57
【问题描述】:

有没有办法从非 C/C++ 文件中读取 C++ 原始字符串文字的内容(在编译时 - 即将其硬编码到结果单元中?

C++ 有很好的原始字符串文字,例如

const char* const cstring = 
R"myheredoc(
       do ;*!$%@#
       whatever 
       you want here
)myheredoc";

但是,有没有办法从非 C++ 文件(例如示例配置文件)中读取原始字符串的内容。

我可以想象这可以通过构建系统来完成,只是想知道我没有错过 C++ 新功能的任何内容。

【问题讨论】:

    标签: c++ file include string-literals


    【解决方案1】:

    目前 C++ 没有办法完成它,只能依赖预处理器和构建系统。

    虽然您可以使用由预处理器#includeed 自动生成的头文件/源文件来完成它,但这种情况有点令人遗憾。因此,目前有一篇针对 C++20 的论文正在酝酿中,提出了恰当命名的 std::embed。如果它被选入 C++ 标准,它将允许你做你想做的事。所以请继续关注。

    【讨论】:

    • 如果 OP 使用的是 Linux 或其他提供 xxd 程序的操作系统,则可以使用 xxd -i sourcefile 轻松生成所述标头,这将为您提供包含文件内容的无符号字符数组.
    • @Shawn - 无论过程是否复杂,都不会改变这一事实,它是在语言之外完成的一个步骤。需要使用xxd还是属于这个问题的前提。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多