//获取到'|'分隔后,元素的个数,如示例代码中,|分隔后,元素数为3
#include <afxdisp.h>
#include <stdio.h>
#include <tchar.h>
#include <locale.h>
CString str=_T("操作员,38d530a786319f0b,2016-2-19 7:12:50|审核员,10b29db7d7b6260a,2016-2-19 7:13:46|操作员,63a99f015106cd44,2016-2-19 9:6:50");
int main() {
    int i,c,c1,L;
    TCHAR t;    _tsetlocale(LC_ALL,_T("chs"));
    c1=-1;
    c=0;
    i=0;
    L=_tcslen(str);
    for (i=0;i<L;i++) {
        t=str[i];
        if (t==_T(',')) {
            c++;
        }
        if (t==_T('|') || i==L-1) {
            if (c1==-1) {
                c1=c;
                c=0;
            } else {
                if (c1!=c) {
                    _tprintf("|分隔的元素个数%d!=%d !\n",c1+1,c+1);
                    return 1;
                }
                c=0;
            }
        }
    }
    _tprintf("|分隔的元素个数%d\n",c1+1);
    return 0;
}
//|分隔的元素个数3
//

解决方案 »

  1.   

    你那字符串每个元素都是固定长度的,直接获取字符串长度除以每个元素的长度就行了.
    TCHAR str[]=_T("操作员,38d530a786319f0b,2016-2-19 7:12:50|审核员,10b29db7d7b6260a,2016-2-19 7:13:46|操作员,63a99f015106cd44,2016-2-19 9:6:50");
    int a = _tcslen(_T("操作员,38d530a786319f0b,2016-2-19 7:12:50"));
    int b = _tcslen(str)/a;
      

  2.   

    楼主可以看下sscanf()功能函数
      

  3.   

    cstring str;
    str.find(),
    str.mid();
    有这些库函数,楼主可以查MSDN啊
      

  4.   

    CString str=_T("操作员,38d530a786319f0b,2016-2-19 7:12:50|审核员,10b29db7d7b6260a,2016-2-19 7:13:46|操作员,63a99f015106cd44,2016-2-19 9:6:50");
    CString resToken(_T(""));
    int curPos = 0;
    LPCTSTR lpszToken = _T("|");
    resToken= str.Tokenize(lpszToken, curPos); int nCount = 0;
    while (resToken != _T(""))
    {
    AfxMessageBox(resToken);
    resToken = str.Tokenize(lpszToken, curPos);
    ++nCount;
    }  
      

  5.   

    sscanf 对%s 没效果 好像
      

  6.   

    CString str=_T("操作员,38d530a786319f0b,2016-2-19 7:12:50|审核员,10b29db7d7b6260a,2016-2-19 7:13:46|操作员,63a99f015106cd44,2016-2-19 9:6:50"); 

    int nCount=0;

    //while执行完成nCount就是查询到分隔符出现的次数
    while( str.Find(_T("|")) > 0 )
    {
    str.Delete( 0, str.Find(_T("|"))+1 );
    nCount++;
    }

    //元素个数是分隔符出现次数+1
    nCount = nCount + 1;