char string[] = "101 ¦235 ¦501 ¦131458 ¦89727 ¦123456";
char seps[]   = " ¦";
char *token;void main( void )
{
   printf( "%s\n\nTokens:\n", string );
   /* Establish string and get the first token: */
   token = strtok( string, seps );
   while( token != NULL )
   {
      /* While there are tokens in "string" */
      printf( " %s\n", token );
      /* Get next token: */
      token = strtok( NULL, seps );
   }
}CString str( "101¦235¦501¦131458¦89727¦123456" );
CString resToken;
int curPos= 0;resToken= str.Tokenize("!",curPos);
while (resToken != "")
{
   printf("Resulting token: %s\n", resToken);
   resToken= str.Tokenize("|",curPos);
};

解决方案 »

  1.   

    CString str("101 ¦235 ¦501 ¦131458 ¦89727 ¦123456");
    while(!str.IsEmpty())
    {
    int n = str.FindOneOf(" |"); // 注意空格 CString str1 = str.Left(n);
    //这里保存或显示str1
    str.Delete(0, n);
    str.TrimLeft(" |"); // 注意空格
    }
      

  2.   

    告诉楼主微软的CRT中有一个叫strtok的函数直接就能解诀了,你去看MSDN中的CRT中就有例子.
      

  3.   

    CString getString(CString strOpt,int n,CString sign=_T(""))     //传入字符串  N  以什么做为分格符
    {
     int nSign=0;
     CString result=_T("");
     for(int i=0;i<strOpt.GetLength();i++)
     {
      if(strOpt.GetAt(i)==sign)
      {
       if(n-1==nSign)
       {
        return result;
       }
       else
       {
        nSign++;
        result=_T("");
       }
      }
      else
      {
       result+=strOpt.GetAt(i);
      }
     }
     if(n-1==nSign)
      return result;
     else
      return _T("");
    }  
      

  4.   

    可以使用boost进行字符串操作,非常方便#include <boost/algorithm/string.hpp>
    using namespace std;
    using namespace boost; split() 按照给定的谓词切割字符串,并且把切割后的值放入到给定的容器中
    Example:
    class SplitNotThisChar
    {
    public:
       SplitNotThisChar(const char ch) : m_char(ch) {}
       bool operator ()(const char &ch) const
       {
        if(ch == m_char)
         return true;
        else
         return false;
       }
    private:
       char m_char;
    };string str1("hello world!");
    string str2;
    std::vector<std::string> result;
    split(result, str1, SplitNotThisChar('l')); // result = [4]("he","","o wor","d!")
      

  5.   


    /*
     * 函数功能 :以特定字符拆分字符串
     * 备注 :非'\0'字符
     * 作者 :
     * 时间 :2008-03-04 8:49:25
     */
    void SplitString(LPCTSTR lpszSrc, StringArray &szaDst, char c)
    {
    assert(!IsBadStringPtr(lpszSrc, -1));
    assert(c != '\0');

    string  strSrc(lpszSrc);
    szaDst.clear();

    while (!strSrc.empty())
    {
    int nLeft = strSrc.find(c);  

    // 判断待查字符有没找到,若没找到,则插入到尾部
    if (string::npos == nLeft)      
    {
    szaDst.push_back(strSrc);
    break;
    }
    else
    {
    string strTemp = strSrc.substr(0, nLeft);

    // 将元素加入尾部
    szaDst.push_back(strTemp);
    strSrc = strSrc.substr(nLeft + 1);
    }
    }
    }
      

  6.   


    /*
     * 函数功能 :以特定字符拆分字符串
     * 备注 :非'\0'字符
     * 作者 :
     * 时间 :2008-03-03 8:49:25
     */
    void SplitString(LPCTSTR lpszSrc, CStringArray &szaDst, char c)
    {
    ASSERT(AfxIsValidString(lpszSrc));
    ASSERT(c != '\0');

    CString  szStr(lpszSrc); 
    szaDst.RemoveAll();

    // 待查字符 c 在待查字符串中的位置
    int nLeft = szStr.Find(c);

    while (!szStr.IsEmpty())
    {
    if (nLeft == -1)
    {
    szaDst.Add(szStr);
    break;
    }
    else
    {
    CString sztemp = szStr.Left(nLeft);
    szaDst.Add(sztemp);
    szStr = szStr.Mid(nLeft + 1);
    nLeft = szStr.Find(c);
    }
    }
    }
      

  7.   


    /*
     * 函数功能 :以特定字符拆分字符串
     * 备注 :非'\0'字符
     * 作者 :
     * 时间 :2008-03-04 8:49:25
     */
    void SplitString(LPCTSTR lpszSrc, StringArray &szaDst, char c)
    {
    assert(!IsBadStringPtr(lpszSrc, -1));
    assert(c != '\0');

    string  strSrc(lpszSrc);
    szaDst.clear();

    while (!strSrc.empty())
    {
    int nLeft = strSrc.find(c);  

    // 判断待查字符有没找到,若没找到,则插入到尾部
    if (string::npos == nLeft)      
    {
    szaDst.push_back(strSrc);
    break;
    }
    else
    {
    string strTemp = strSrc.substr(0, nLeft);

    // 将元素加入尾部
    szaDst.push_back(strTemp);
    strSrc = strSrc.substr(nLeft + 1);
    }
    }
    }
      

  8.   

    LZ,用strtok函数,详细看MSDN,里面有例子