50 lines
964 B
C++
Executable File
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
|