#include<iostream>
#include<vector>
#include<string>
std::vector<std::string> parse (const std::string& s,
const char delim)
{
std::vector<std::string> result {};
auto start = 0U;
auto end = s.find (delim);
while (end != s.npos)
{
result.push_back (s.substr(start, end - start));
start = ++end;
end = s.find (delim, start);
}
result.push_back (s.substr (start, s.npos - start));
return result;
}
std::vector<std::string> parse (const std::string& s,
const std::string& delim)
{
std::vector<std::string> result {};
auto start = 0U;
auto end = s.find (delim);
while (end != s.npos)
{
result.push_back (s.substr(start, end - start));
start = end + delim.length();
end = s.find (delim, start);
}
result.push_back (s.substr (start, s.npos - start));
return result;
}
int main()
{
std::string str1 = "This is a string that will be parsed by a
single-space delimiter.";
std::string str2 =
"This==is==a==string==that==will==be==parsed==by==equal==operator.";
std::string str3 = "This string has no delimiter.";
std::cout << str1 << std::endl;
std::vector<std::string> v1 = parse (str1, ' ');
for (auto i : v1 )
std::cout << i << std::endl;
std::cout << std::endl;
std::cout << str2 << std::endl;
std::vector<std::string> v2 = parse (str2, "==");
for (auto i : v2 )
std::cout << i << std::endl;
std::cout << std::endl;
std::cout << str3 << std::endl;
std::vector<std::string> v3 = parse (str3, '\\');
for (auto i : v3 )
std::cout << i << std::endl;
std::cout << std::endl;
}