17 for (
size_t i = 0; i < str.length(); ++i)
20 ((str[i] >=
'A' && str[i] <=
'Z') ||
21 (str[i] >=
'0' && str[i] <=
'9' && (str[i - 1] <
'0' || str[i - 1] >
'9')))
39 constexpr std::array<char, N>
ToSnakeCase(std::string_view str)
44 throw std::invalid_argument(
"ToSnakeCase called with wrong output size");
46 std::array<char, N> output{};
48 for (
size_t i = 0; i < str.length(); ++i)
50 if (str[i] >=
'A' && str[i] <=
'Z')
54 output[index++] =
'_';
56 output[index++] = str[i] +
'a' -
'A';
58 else if (i > 0 && str[i] >=
'0' && str[i] <=
'9' && (str[i - 1] <
'0' || str[i - 1] >
'9'))
60 output[index++] =
'_';
61 output[index++] = str[i];
65 output[index++] = str[i];
76 constexpr std::string_view
ToStringView(
const std::array<char, N>& a)
78 return std::string_view(a.data(), N);
constexpr std::string_view ToStringView(const std::array< char, N > &a)
Convert a std::array of char to string_view.
constexpr size_t GetSnakeCaseSize(std::string_view str)
Get the size of a string_view once converted to snake_case.
constexpr std::array< char, N > ToSnakeCase(std::string_view str)
Get a snake_case char array from a string_view.