File indexing completed on 2025-12-16 10:30:06
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef ROOT_StringUtils
0015 #define ROOT_StringUtils
0016
0017 #include <string_view>
0018
0019 #include <string>
0020 #include <vector>
0021 #include <numeric>
0022 #include <iterator>
0023
0024 namespace ROOT {
0025
0026 std::vector<std::string> Split(std::string_view str, std::string_view delims, bool skipEmpty = false);
0027
0028
0029
0030
0031
0032
0033
0034
0035 template <class StringCollection_t>
0036 std::string Join(const std::string &sep, StringCollection_t &&strings)
0037 {
0038 if (strings.empty())
0039 return "";
0040 return std::accumulate(std::next(std::begin(strings)), std::end(strings), strings[0],
0041 [&sep](auto const &a, auto const &b) { return a + sep + b; });
0042 }
0043
0044 std::string Round(double value, double error, unsigned int cutoff = 1, std::string_view delim = "#pm");
0045
0046 inline bool StartsWith(std::string_view string, std::string_view prefix)
0047 {
0048 return string.size() >= prefix.size() && string.substr(0, prefix.size()) == prefix;
0049 }
0050
0051 inline bool EndsWith(std::string_view string, std::string_view suffix)
0052 {
0053 return string.size() >= suffix.size() && string.substr(string.size() - suffix.size(), suffix.size()) == suffix;
0054 }
0055
0056 }
0057
0058 #endif