str="sdfdf<<b>>>dsfdsfsdf<<1234>>>sdfsf"
我想得到<<与>>>之间的内容,即
b
1234
求代码

解决方案 »

  1.   

    CFile::Find,Left,Mid,自己查查怎么用
      

  2.   

    字符串截取函数:
    CString::GetAt
    CString::Mid
    CString::Left
    CString::Right
    字符串查找函数:
    CString::Find
    CString::ReverseFind
    CString::FindOneOf用这些就够了
      

  3.   


    如果决定长期发展,我的建议是:不要用 CString 类,一个字节一个字节的读,然后进行分析。思路:1、每次读取一个字节;
    2、判断是不是“<”;
    3、如果不是,判断下一个;
       如果是,做标记;
    4、判断下一个;
       如果不是“<”,判断下一个;
       如果是“<”,做标记,记录位置(表示后边的内容就是需要的);
    5、判断下一个;
       如果是“>”,做标记,开始累计;
       如果不是“>”,累计清零;
    6、判断下一个;
       如果是“>”,做标记,开始累计;
       如果不是“>”,累计清零;
    7、直到连续三个“>”出现,表示遇到了结束符,记录位置;
    8、根据两次记录的位置,获取内容;
    我说的不一定全对,但是用这种方法做过后,在遇到类似的问题你就不怕了。
      

  4.   


    int fnSplitString(const CString& strString, const CString& strSplit1, const CString& strSplit2, CStringArray& csaRet)
    {
    CString strInput = strString;
    int nCount = 0;
    int nStep = 0;
    int i; csaRet.RemoveAll();
    if (strInput.IsEmpty())
    return nCount;
    else
    {
    while (true)
    {
    if (nStep == 0)
    {
    i = strInput.Find(strSplit1);
    if (i = -1)
    return nCount;
    else
    {
    strInput.Delete(0, i + strSplit1.GetLength());
    nStep = 1;
    }
    }
    else
    if (nStep == 1)
    {
    i = strInput.Find(strSplit2);
    if (i = -1)
    return nCount;
    else
    {
    csaRet.Add(strInput.Left(i));
    nCount++;
    strInput.Delete(0, i + strSplit1.GetLength());
    nStep = 0;
    }
    }
    }
    }
    }