代码实现:
#include <vector> //引用头文件
using std::vector;
int SplitCString(const CString& str, const CString* separator, int sep_number, vector<CString>& strArray)
{
strArray.clear();
int index = -1;
const int MAX_COUNT = 1000000; //最大分割长度
int smallIndex = MAX_COUNT;
CString szLeft;
CString szRight = str;
int sepLength = 1;
for (int i = 0; i < sep_number; i++)
{
if(separator[i].IsEmpty())continue;
index = szRight.Find(separator[i]);
if (index >= 0 && index < smallIndex)
{
smallIndex = index; //遍历获得所有的分割符的最小Index
sepLength = separator[i].GetLength();
}
if (i == sep_number - 1 && smallIndex != MAX_COUNT) //遍历全部分割符之后(用i == length-1判断)
{
szLeft = szRight.Left(smallIndex);
szLeft.Trim(); //去除空格
if (!szLeft.IsEmpty())
{
strArray.push_back(szLeft);
}
szRight = szRight.Right(szRight.GetLength() - smallIndex - sepLength);
szRight.Trim();
if (szRight.GetLength() > 0)
{
i = -1;
smallIndex = MAX_COUNT;
}
else break;
}
else if (i == sep_number - 1)
{
szRight.Trim();
if (!szRight.IsEmpty())strArray.push_back(szRight);
}
}
return strArray.size();
}
使用如下:
以上为个人当前经验所开发代码, 分享给路过并需要的朋友参考, 若有不正确的或者大家有更好的方法欢迎各位指出或分享, 谢谢!