字符串字符分割代码

来源:互联网 发布:热力学计算软件 编辑:程序博客网 时间:2024/05/16 07:03
#include <list>#include <string>using namespace std;//获取两种字符之间的数字void GeDataListByStartStopSplitFlag(char *pContent,std::list<int> & listId,char cStartFlag='{',char cStopFlag='}');//获取分割数据(通过分隔符)void GeDataListBySplitFlag(char *pContent,std::list<std::string> & listId,char *pSplitFlag=",");//分割字符void StringSplit(char *pStr,int nSplitFlag,list<string> & listSplit);


//获取两种字符之间的数据void GeDataListByStartStopSplitFlag(char *pContent,std::list<int> & listId,char cStartFlag,char cStopFlag){listId.clear();if(pContent != NULL){char *p = pContent;char *q = NULL;char *qn = NULL;int nId = 0;char szId[32] = {0};while(true){q = strchr(p,cStartFlag);if(q != NULL){qn = strchr(q+1,cStopFlag);if(qn != NULL){memset(szId,0,sizeof(szId));memcpy(szId,q+1,qn-q-1);nId = atoi(szId);listId.push_back(nId);p = qn+1;}else{break;}}else{break;}}}}//获取分割数据(通过分隔符)void GeDataListBySplitFlag(char *pContent,std::list<std::string> & listId,char *pSplitFlag){listId.clear();if(pContent != NULL){int nSplitFlagLength = strlen(pSplitFlag);char *p = pContent;char *q = NULL;char *qn = NULL;int nId = 0;char szId[128] = {0};while(true){q = strstr(p,pSplitFlag);if(q != NULL){memset(szId,0,sizeof(szId));memcpy(szId,p,q-p);listId.push_back(szId);//下一个p = q+nSplitFlagLength;}else{if(p != '\0'){memset(szId,0,sizeof(szId));strcpy(szId,p);listId.push_back(szId);}break;}}}}
//分割字符void StringSplit(char *pStr,int nSplitFlag,list<string> & listSplit){listSplit.clear();if(NULL == pStr)return;if('\0' == nSplitFlag){listSplit.push_back(pStr);}else{char *p = NULL;char *q = pStr;char szTmp[128] = {0};while(true){p = strchr(q,nSplitFlag);memset(szTmp,0,sizeof(szTmp));if(p != NULL){memcpy(szTmp,q,p-q);listSplit.push_back(szTmp);q = p+1;if(q == NULL){break;}}else{strcpy(szTmp,q);listSplit.push_back(szTmp);break;}}}}


0 0