How to declare constexpr C string?
In C++17, you can use std::string_view
and string_view_literals
using namespace std::string_view_literals;
constexpr std::string_view my_str = "hello, world"sv;
Then,
my_str.size()
is compile time constant.
Is it
constexpr char * const my_str = "hello";
No, because a string literal is not convertible to a pointer to char
. (It used to be prior to C++11, but even then the conversion was deprecated).
or
const char * constexpr my_str = "hello";
No. constexpr
cannot go there.
This would be well formed:
constexpr const char * my_str = "hello";
but it does not satify this:
So that i will be able to get its length at compile-time with sizeof, etc.
or
constexpr char my_str [] = "hello";
This is well formed, and you can indeed get the length at compile time with sizeof
. Note that this size is the size of the array, not the length of the string i.e. the size includes the null terminator.