7template<
class C,
class CharT>
8C basicTokenizeString(std::basic_string_view<CharT>
s, std::basic_string_view<CharT> separators)
11 auto pos =
s.find_first_not_of(separators, 0);
12 while (pos !=
s.npos) {
13 auto end =
s.find_first_of(separators, pos + 1);
16 result.insert(result.end(), std::basic_string<CharT>(
s, pos,
end - pos));
17 pos =
s.find_first_not_of(separators,
end);
23C tokenizeString(std::string_view
s, std::string_view separators)
25 return basicTokenizeString<C, char>(
s, separators);
28template<
class C,
class CharT>
29C basicSplitString(std::basic_string_view<CharT>
s, std::basic_string_view<CharT> separators)
33 while (pos <=
s.size()) {
34 auto end =
s.find_first_of(separators, pos);
37 result.insert(result.end(), std::basic_string<CharT>(
s, pos,
end - pos));
45C splitString(std::string_view
s, std::string_view separators)
47 return basicSplitString<C, char>(
s, separators);
50template<
class CharT,
class C>
51std::basic_string<CharT> basicConcatStringsSep(
const std::basic_string_view<CharT> sep,
const C & ss)
56 for (
const auto &
s : ss) {
59 size += std::basic_string_view<CharT>{
s}.size();
62 std::basic_string<CharT>
s;
75std::string concatStringsSep(
const std::string_view sep,
const C & ss)
77 return basicConcatStringsSep<char, C>(sep, ss);
81std::string dropEmptyInitThenConcatStringsSep(
const std::string_view sep,
const C & ss)
94 for (
const auto &
s : ss)
95 size += sep.size() + std::string_view(
s).size();
PosIdx end
Definition lexer.l:5814
auto i
Definition lexer.l:2745
return s
Definition lexer.l:459