可以使用constexpr函数和模板的方式来解决这个问题。下面是一个代码示例:
template
constexpr auto from_constexpr_string_impl(const T (&str)[N], std::index_sequence)
{
return std::array{str[Is]...};
}
template
constexpr auto from_constexpr_string(const char (&str)[N])
{
return from_constexpr_string_impl(str, std::make_index_sequence{});
}
int main()
{
constexpr auto str = "hello world";
constexpr auto arr = from_constexpr_string(str);
static_assert(arr[0] == 'h');
static_assert(arr[1] == 'e');
static_assert(arr[2] == 'l');
static_assert(arr[3] == 'l');
static_assert(arr[4] == 'o');
// ...
}
从const char*类型的字符串中获取字符序列可以使用模板和constexpr函数。在这个例子中,我们使用from_constexpr_string_impl函数和std::index_sequence来将字符串转换为std::array,这样就可以使用下标来访问其中的字符了。main函数中使用static_assert来验证程序的正确性。