5 #ifndef PIVX_UTIL_STRING_H
6 #define PIVX_UTIL_STRING_H
25 template <
typename T,
typename UnaryOp>
26 std::string
Join(
const std::vector<T>& list,
const std::string& separator, UnaryOp unary_op)
29 for (
size_t i = 0; i < list.size(); ++i) {
30 if (i > 0) ret += separator;
31 ret += unary_op(list.at(i));
36 inline std::string
Join(
const std::vector<std::string>& list,
const std::string& separator)
38 return Join(list, separator, [](
const std::string& i) {
return i; });
46 return str.size() == strlen(str.c_str());
52 template <
typename T1,
size_t PREFIX_LEN>
54 const std::array<uint8_t, PREFIX_LEN>&
prefix)
56 return obj.size() >= PREFIX_LEN &&
57 std::equal(std::begin(
prefix), std::end(
prefix), std::begin(obj));
NODISCARD bool HasPrefix(const T1 &obj, const std::array< uint8_t, PREFIX_LEN > &prefix)
Check whether a container begins with the given prefix.
bool ValidAsCString(const std::string &str) noexcept
Check if a string does not contain any embedded NUL (\0) characters.
std::string Join(const std::vector< T > &list, const std::string &separator, UnaryOp unary_op)
Join a list of items.