标准库里有没有啊?
PS:上哪儿能找到比较好的标准库编程指南啊?

解决方案 »

  1.   

    strtoken, strstr ...
    多了,
    自己去msdn查吧。
      

  2.   

    ms-help://MS.MSDNQTR.2003FEB.1033/vclib/html/_crt_string_manipulation.htm
      

  3.   

    strtok(); 
    不过这个需要你指定哪些字符是分隔符,而且会修改源字符串。
      

  4.   

    下面是我的做法,XStringList 是一个 String 的队列用于保存已经分出来的字符串,可以自己用其他对象代替,返回值是分出多少个字符串,例如 1,2,,3 分出的是 "1" "2" "" "3" 共四个字符串,算法并不是最优,请各位指正,
    int strToArglist(const char * pszStr, const char * pszToken, XStringList & arglist)
    {
    int tok_len = ::strlen(pszToken);
    int str_len = ::strlen(pszStr);
    char* tToken = new char[tok_len + 1];
    char* tStr = new char[str_len + 1];
    char* tmp = new char[str_len + 1];
    char* p1 = tStr; char* p2 = tStr;
    ::ZeroMemory(tToken,tok_len + 1);
    ::ZeroMemory(tStr,str_len + 1);
    ::CopyMemory(tStr,pszStr,str_len);
    bool bToken = false; do
    {
    ::ZeroMemory(tmp,str_len + 1);
    p2 = ::_tcsstr(p1,pszToken);
    if (p1 == p2)
    { } if ((p2 != NULL && p1 == tStr) || *p1 != 0x00 || (p2 == NULL && bToken && *p1 == 0x00))
    {
    if (p2 == NULL)
    ::CopyMemory(tmp,p1,::strlen(p1));
    else
    ::CopyMemory(tmp,p1,p2-p1);
    XString * pstr = new XString;
    *pstr = tmp;
    arglist.PushItem(pstr); bToken = true;
    } if (p2 != NULL)
    p1 = p2 + tok_len;
    }
    while(p2 != NULL); delete [] tToken;
    delete [] tStr;
    delete [] tmp; return arglist.Size();
    }
      

  5.   

    用Mid Find ReverseFind left等函数编一个不行吗?
      

  6.   

    我觉得还是自己写好。
    因为那些函数往往只能顺序分割。
    比如我拿到一个字符串,只需要其中第8段,
    或者我先要第8段,再要第20段,再要12段。
    用那些函数就不够方便了。我自己写了一个类,
    类内部有几个指针,由类自行管理。
    外部只要调用函数就可以了:
    一个成员函数Split(const char *str, const char c)一次检查,终身有用,
    一个成员函数GetSplitedStr(char *target, const int i)用于获取任意一段。