diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/string/split.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/string/split.cpp')
-rw-r--r-- | util/string/split.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/util/string/split.cpp b/util/string/split.cpp new file mode 100644 index 00000000000..7d26857cc7a --- /dev/null +++ b/util/string/split.cpp @@ -0,0 +1,24 @@ +#include "split.h" + +template <class TValue> +inline size_t Split(const char* ptr, const char* delim, TVector<TValue>& values) { + values.erase(values.begin(), values.end()); + while (ptr && *ptr) { + ptr += strspn(ptr, delim); + if (ptr && *ptr) { + size_t epos = strcspn(ptr, delim); + assert(epos); + values.push_back(TValue(ptr, epos)); + ptr += epos; + } + } + return values.size(); +} + +size_t Split(const char* ptr, const char* delim, TVector<TString>& values) { + return Split<TString>(ptr, delim, values); +} + +size_t Split(const TString& in, const TString& delim, TVector<TString>& res) { + return Split(in.data(), delim.data(), res); +} |