#include <string>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
bool ReplaceWhiteSpace(std::string& source, const std::string& delimiters)
{
if (source.empty())
{
return false;
}
for (std::size_t pos = source.find(delimiters); pos != std::string::npos; pos = source.find(delimiters))
{
if (source.replace(pos, 1, " ").size())
{
continue;
}
return false;
}
return true;
}
bool StringSplit(std::string& source, std::vector<std::string>& array, const std::string& delimiters)
{
if (ReplaceWhiteSpace(source, delimiters))
{
if (array.empty())
{
array.swap(*const_cast<std::vector<std::string>*>(std::addressof(static_cast<const std::vector<std::string>&>(std::move(std::vector<std::string>
{
std::istream_iterator<std::string>(*const_cast<std::istringstream*>(std::addressof(static_cast<const std::istringstream&>(std::move(std::istringstream(source)))))),
std::istream_iterator<std::string>()
})))));
return true;
}
}
return false;
}
评论已关闭