如何在编译期间将字符串转换为字符(元编程)

时间:2018-03-19 13:53:08

标签: c++ metaprogramming

假设我想在"之前执行一些操作"他进入Binary。

我的主要问题是文字字符串,我尝试执行操作并保存生成的字符串,然后对结果字符串执行其他操作。

我已经创建了这个迷你代码:

template <char one_char>
struct deal_with_one_char
{
    enum { my_val = one_char ^ 0x55};
};


template <char ... Chars>
struct deal_with_milty_char
{
    static const char My_string[sizeof...(Chars)+1];
};

template <char ... Chars>
char const deal_with_milty_char< Chars ...>::My_string[sizeof...(Chars)+1] = { deal_with_one_char<Chars>::my_val ...};

int main()
{
    cout << deal_with_milty_char<'H', 'B', 'R'>::My_string << std::endl;
    return 0;
}

当然,它的工作原理是因为它在编译时会占据全局数组,并且一切都很好。 问题是如何桥接现有间隙并插入常规字符串并将其转换为一系列字符,以便它可以使用这些函数。

说明我尝试做的事情的一个例子:

#define CompleteStr(str) (do something to converrt str to deal_with_milty_char<'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'>::My_string)

int main()
{
    cout << CompleteStr("hello world")::My_string << std::endl;
    return 0;
}   

当然,一切都必须在编译期间完成。

从概念上讲,我尝试将与我的字符串相关的模板作为一个带有分隔而不是一个字符串的字节序列。问题是我不清楚如何做到这一点......

0 个答案:

没有答案