8#ifndef DESIGNLAB_STRING_UTIL_H_
9#define DESIGNLAB_STRING_UTIL_H_
14#include <magic_enum.hpp>
28std::vector<std::string>
Split(
const std::string&
str,
const std::string&
delim);
57 static_assert(std::is_enum<T>::value,
"引数は enum,あるいは enum classである必要があります.");
59 std::string
str =
static_cast<std::string
>(magic_enum::enum_name(
enum_value));
61 if (
str.size() > 0 &&
str[0] ==
'k')
78 static_assert(std::is_enum<T>::value,
"引数は enum,あるいは enum classである必要があります.");
83 for (
const auto&
e : magic_enum::enum_values<T>())
94 str +=
static_cast<std::string
>(magic_enum::enum_name(
e));
109 using enum_type =
typename std::underlying_type<T>::type;
112 for (
const auto&
e : magic_enum::enum_values<T>())
123 str +=
static_cast<std::string
>(magic_enum::enum_name(
e));
139 "class ",
"struct ",
"designlab::",
",void"
148 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型を渡すと,その要素を列挙した文字列を返す関数.