我有以下字符串
useid;username;userobject;userip
用引号隔开,我希望用四个CString变量分别获取这四个部分
如何实现?
谢谢

解决方案 »

  1.   

    CString str="useid;username;userobject;userip";
    CString str1,str2,str3,str4;str1=str.Left(str.Find(':');
    str=str.Right(str.GetLenght()-str.Find(';')-1);str2=str.Left(str.Find(':');
    str=str.Right(str.GetLenght()-str.Find(';')-1);str3=str.Left(str.Find(':');
    str=str.Right(str.GetLenght()-str.Find(';')-1);str4=str.Left(str.Find(':');
    str=str.Right(str.GetLenght()-str.Find(';')-1);
      

  2.   

    str4不要这样处理了
    直接在
    str3后
    str4=str.Right(str.GetLenght()-str.Find(';')-1);
      

  3.   

    var
    i,j,k:integer;
    tem:array[1..4] of string;
    begin
    ss:='useid;username;userobject;userip';
    j:=1;
    k:=1;
    for i:=1 to length(ss) do
        if ss[i]=';' then
            begin
              tem[j]:=copy(ss,k,i-k+1);
              inc(j);
              k:=i+1;
            end; 
    end;结果数组就是四个值
      

  4.   

    错了,上面的
    第五行应该是:
    ss:='useid;username;userobject;userip'+';';
      

  5.   

    其实最好是自己写一个函数,类似于String类的substr函数就可以了,以后就只要调用,就没这么烦麻了。
      

  6.   

    如果考虑运行效率
    最好使用字符缓冲区和指针
    代码大概如此
    CString str="useid;username;userobject;userip";
    CStringArray strD;
    LPSTR p=str.GetBuffer(str.GetLength()+1);
    char * b=p;
    while((p=strchr(b,';'))!=NULL)
    {
    p[0]='\0';
    strD.Add(b);
    p[0]=';';
    b=p+1;
    }
    if(strlen(b)>0) strD.Add(b);
    str.ReleaseBuffer();if(strD.GetSize()>0)
    {
         for(int i=0;i<strD.GetSize();i++)
         AfxMessageBox(strD[i]);
    }