代码之家  ›  专栏  ›  技术社区  ›  darune

如何将编译时字符串(BOOST_METAPARSE_string)转换为运行时字符串?

  •  0
  • darune  · 技术社区  · 7 年前

    BOOST_METAPARSE_STRING 编译时模板参数是否为“常规”字符串?

    我正在使用 BOOST_METAPARSE_字符串 提供字符串作为模板参数(一次性/单行)。 以下内容很好:

    template<class T>
    struct t{
    };
    
    t< BOOST_METAPARSE_STRING("hello") > tt_;
    

    但是,我还需要在某个时候显示字符串等,我还没有找到一种方法来构造某种形式的运行时字符串, std::string /编译时类型中的任何内容。我知道这是可能的,但是怎么可能呢?

    const char* ) ?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Quentin    7 年前

    根据 the documentation 对于 BOOST_METAPARSE_STRING ,它产生了 boost::metaparse::string (记录在案) here

    template <char... Chars>
    std::string toString(boost::metaparse::string<Chars...>) {
        return {Chars...};
    }
    

    See it live on Coliru


    或者,如果您不想在查看文档之前重新发明轮子(啊哼),那就是 boost::mpl::c_str