代码实现:
#include <vector> //引用头文件
using std::vector;
int SplitCString(const CString& str,const char * 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;
for (int i = 0; i< sep_number; i++)
{
index = szRight.Find(separator[i]);
if (index >= 0 && index < smallIndex)
{
smallIndex = index; //遍历获得所有的分割符的最小Index
}
if (i == sep_number-1 && smallIndex != MAX_COUNT) //遍历全部分割符之后
{
szLeft = szRight.Left(smallIndex);
szLeft.Trim(); //去除空格
if (!szLeft.IsEmpty()) strArray.push_back(szLeft);
szRight = szRight.Right(szRight.GetLength()-smallIndex-1);
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();
}
代码使用:
char separator[4] = {'[', '/', ',', ']'};
CString szMessage = "[Port 2 / Pin 0], 11, 1, [Port 2 / Pin 3], 11, 4";
vector<CString> arrayText;
SplitCString(szMessage,separator,sizeof(separator),arrayText);
分割数据结果如下:
以上为个人当前经验所开发代码, 分享给路过并需要的朋友参考, 若有不正确的或者大家有更好的方法欢迎各位指出或分享, 谢谢!