CString strTemp = "123 456";
int pos = strTemp.Find(" ");
CString str1 = strTemp.Left(pos);
CString str2 = strTemp.Right(strTemp.GetLenght()-pos-1);为什么结果是三个字符串都是"123 456",
在VC6.0上编译~

解决方案 »

  1.   

    三个都一样?你的例子里str1和str2不可能一样的。
      

  2.   

    是不是"123 456"和Find里面的空格没对准?
      

  3.   

    为什么在另一个程序就可以啊~~只是在我原来的那个程序中是用getline从文件中获得的字符串,用find也可以返回正确的位置,就是分割的时候没有成功~~
      

  4.   

    infile.getline(strTemp.GetBuffer(100),100);
    if(strTemp != "")
    {
    int pos = strTemp.Find(" ");
    m_strCode = strTemp.Left(pos);
    MessageBox(m_strCode);
    }其中所有变量都已经定义好了,也测过了pos的值,没有问题,只是m_strCode 跟strTemp是一样的~
      

  5.   

    突然发现个问题,就是strTemp.GetLength()返回的是0,是什么回事啊~~是那个GetBuffer在作怪吗~
      

  6.   

    就是错在这里了,GetBuffer是取出strTemp中字符串的首地址,是一个输出的参数,不可以赋值。
      

  7.   

    哈哈,我自己解决了~~只要在调用了GetBuffer()之后再调用一下ReleaseBuffer()就什么事都没有了~!~看一下MSDN还是蛮好的~~嘿嘿~~