在编程中经常遇到分割字符串的情况,为了能个在遇到的时候,有参考代码拿来就用,于是实现了以下代码,供参考。
#include <iostream>
#include <vector>
template<typename _Elem>
std::vector<std::basic_string<_Elem>> StrSplit(const _Elem* str, const _Elem* Separator)
{
using pos_type = typename std::basic_string<_Elem>::size_type;
using str_type = std::basic_string<_Elem>;
pos_type start_pos = std::string::npos + 1;
pos_type end_pos = start_pos;
std::vector<str_type> vect;
str_type chars = str;
str_type str_seq(Separator);
int len_seq = str_seq.length();
do
{
end_pos = chars.find(Separator, start_pos);
if (end_pos != str_type::npos)
{
vect.push_back(chars.substr(start_pos, end_pos - (start_pos)));
start_pos = end_pos + len_seq;
}
else{
break;
}
} while (true);
end_pos = chars.length() - 1;
if (start_pos < end_pos)
{
vect.push_back(chars.substr(start_pos, end_pos + 1 - start_pos));
}
return std::move(vect);
}
int main()
{
std::vector<std::wstring> result = StrSplit(L"asdasj;asds;asdsa;asdas;asd;asdasd;asd;123", L"asds");
std::cout << "good" << std::endl;
}