Files
core_zero/tjp/core/string/split.inl
Timothy Prepscius 996151a56a flatten 20260225
2026-02-25 12:43:06 -05:00

50 lines
964 B
C++
Executable File

// License: Modified MIT (NON-AI)
// See the LICENSE file in the root directory for license information.
// Copyright 2025 Timothy Prepscius
#pragma once
namespace tjp::core {
template <typename T>
std::vector<T> split(const T &s, const T &delimiter)
{
std::vector<T> result;
size_t last = 0; size_t next = 0;
while ((next = s.find(delimiter, last)) != T::npos)
{
if (last < next)
result.push_back(s.substr(last, next-last));
last = next + std::max(delimiter.size(), (size_t)1);
}
if (last < s.size())
result.push_back(s.substr(last));
return result;
}
template <typename T>
std::vector<T> split(const T &s, char delimiter)
{
std::vector<T> result;
size_t last = 0; size_t next = 0;
while ((next = s.find(delimiter, last)) != T::npos)
{
if (last < next)
result.push_back(s.substr(last, next-last));
last = next + 1;
}
if (last < s.size())
result.push_back(s.substr(last));
return result;
}
} // namespace