31constexpr char const *
to_string(
bool iValue) {
return iValue ?
"true" :
"false"; }
45template<StringOutputIterator Out>
46void splitString(
const std::string &iString,
char iDelimiter, Out oResult,
bool iSkipEmptyEntries =
false)
48 std::stringstream ss(iString);
50 while(std::getline(ss, item, iDelimiter))
52 if(!item.empty() || !iSkipEmptyEntries)
55 if(!iSkipEmptyEntries)
57 if(!iString.empty() && iString[iString.size() - 1] == iDelimiter)
69std::vector<std::string>
splitString(
const std::string &iString,
char iDelimiter,
bool iSkipEmptyEntries =
false);
76template<std::
floating_po
int T>
79 char *endPtr =
nullptr;
80 auto value =
static_cast<T
>(strtod(iString.c_str(), &endPtr));
81 if(endPtr == iString.c_str())
96template<std::
floating_po
int T>
108template<std::
floating_po
int T>
109std::vector<T>
splitFloats(
const std::string &iString,
char iDelimiter,
bool iSkipEmptyEntries =
false)
111 static auto f = [] (
const std::string &iString) -> T {
return stringToFloat<T>(iString); };
113 std::vector<T> res{};
115 auto strings =
splitString(iString, iDelimiter, iSkipEmptyEntries);
119 res.reserve(strings.size());
121 std::transform(strings.cbegin(), strings.cend(), std::back_inserter(res), f);
A concept to check if T is an output iterator that accepts std::string.
Definition StringUtils.h:35
Definition CircularBuffer.h:27
constexpr char const * to_string(bool iValue)
Convenient call to convert a boolean into a string.
Definition StringUtils.h:31
std::vector< std::string > splitString(const std::string &iString, char iDelimiter, bool iSkipEmptyEntries)
Split a string according to a delimiter and returns a vector.
Definition StringUtils.cpp:31
std::vector< T > splitFloats(const std::string &iString, char iDelimiter, bool iSkipEmptyEntries=false)
Converts the string to an array of floating points (floats or doubles).
Definition StringUtils.h:109
bool stringToFloat(const std::string &iString, T &oValue)
Converts the string to a floating point (float or double).
Definition StringUtils.h:77