8#ifndef DESIGNLAB_STRING_UTIL_H_
9#define DESIGNLAB_STRING_UTIL_H_
11#include <magic_enum.hpp>
25std::vector<std::string>
Split(
const std::string&
str,
26 const std::string&
delim);
54 static_assert(std::is_enum<T>::value,
55 "引数は enum,あるいは enum classである必要があります.");
57 std::string
str =
static_cast<std::string
>(magic_enum::enum_name(
enum_value));
59 if (
str.size() > 0 &&
str[0] ==
'k') {
74 static_assert(std::is_enum<T>::value,
75 "引数は enum,あるいは enum classである必要があります.");
80 for (
const auto&
e : magic_enum::enum_values<T>()) {
87 str +=
static_cast<std::string
>(magic_enum::enum_name(
e));
101 using enum_type =
typename std::underlying_type<T>::type;
104 for (
const auto&
e : magic_enum::enum_values<T>()) {
111 str +=
static_cast<std::string
>(magic_enum::enum_name(
e));
123 std::vector<std::string>
eliminate{
"class ",
"struct ",
124 "designlab::",
",void"};
130 if (
pos == std::string::npos) {
std::string EnumEntriesToString(const std::string separator)
enum型を渡すと,その要素と値を変換したものを列挙した文字列を返す関数.
std::string GetTypeName(const T &type)
std::vector< std::string > Split(const std::string &str, const std::string &separator)
文字列を分割する関数.指定した文字で文字列を分割する. 分割した結果,空白が含まれる場合や文字列がない場合は,そのまま返す. 最後が区切り文字で終わる場合は,...
std::string EnumToStringRemoveTopK(const T &enum_value)
enumを文字列に変換する関数. Google C++ coding style だと enumの要素は 先頭にkをつけてキャメルケースで書くことが推奨されている....
std::string EnumValuesToString(const std::string separator)
enum型を渡すと,その要素を列挙した文字列を返す関数.