比如CString  str="文件1.doc,文件2.doc,文件3.doc"
怎样将str以逗号分割成不同的字符串存放呢

解决方案 »

  1.   

    保证文件名和文件路径没有逗号strtok--------------------------------------------
    // crt_strtok.c
    // compile with: /W3
    // In this program, a loop uses strtok
    // to print all the tokens (separated by commas
    // or blanks) in the string named "string".
    //
    #include <string.h>
    #include <stdio.h>char string[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;int main( void )
    {
       printf( "Tokens:\n" );
     
       // Establish string and get the first token:
       token = strtok( string, seps ); // C4996
       // Note: strtok is deprecated; consider using strtok_s instead
       while( token != NULL )
       {
          // While there are tokens in "string"
          printf( " %s\n", token );      // Get next token: 
          token = strtok( NULL, seps ); // C4996
       }
    }
      

  2.   

    最省事的办法:
    char sz1[40] = "", sz2[40] = "", sz3[40] = "";
    str.Replace( ',', ' ' );
    sscanf( str, "%s %s %s", sz1, sz2, sz3 );
      

  3.   

    上面都已经说了  呵呵  再改进一下 把答案给你写了吧 呵呵int main(int argc, char* argv[])
    { char  buf[]="test1.doc,test2.doc,test3.doc,test4.doc";
    char  tok[]=",";
    char  *token = NULL; token = strtok(buf,tok);
    while(NULL != token)
    {
    printf("%s\r\n",token);
    token = strtok(NULL ,tok);
    } return 0;
    }
      

  4.   

    4楼方法:CString  str="文件1.doc,文件2.doc,文件3.doc";
    char sz1[40] = "", sz2[40] = "", sz3[40] = ""; 
    str.Replace( ',', ' ' ); 
    sscanf( str, "%s %s %s", sz1, sz2, sz3 );
    或者:CString::Find,CString::Mid,循环截取字符串。
      

  5.   

    CString  str="文件1.doc,文件2.doc,文件3.doc";
        char sz1[40] = "", sz2[40] = "", sz3[40] = ""; 
        str.Replace( ',', ' ' ); 
        sscanf( str, "%s %s %s", sz1, sz2, sz3 );
      

  6.   

    CString  str="文件1.doc,文件2.doc,文件3.doc";
    sscanf( str, "%s,%s,%s", sz1, sz2, sz3 );