#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;
}

标签: none

评论已关闭