char czBuf[40];//TCHAR 也不行
CString csTest1="d:\斯琴格日乐-早已经习惯了.mp3";
CString csTest2;
strcpy(czBuf,csTest1.GetBuffer(0));结果csBuf[]里成了:"?早已经习惯了.mp3",在内存里看的时候仍是:"d:\斯琴格日乐-早已经习惯了.mp3"
最后:
   csTest2=czBuf;
结果发现csTest2里为:"?早已经习惯了.mp3"前面的字符掉丢了.
请问这种问题怎么办?
  

解决方案 »

  1.   

    TCHAR * p = _T("This is a test");
    CString s = p;
    或CString s(p);
    保证没问题。
      

  2.   

    CString csTest1="d:\斯琴格日乐-早已经习惯了.mp3";
    这句错了吧
    应该是
    CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
      

  3.   

    另外char* 到CString的转换是
    CString s(_T("This is a test"));
    LPCTSTR p = s;
    这是一种略微硬性的转换据我所知还有另外两种方法,不过这种方法最安全。
      

  4.   

    CString csTest1="d:\斯琴格日乐-早已经习惯了.mp3";
    改成
    CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
      

  5.   

    不好意思我在程序中是:
    CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
    发贴时写错了。而且把char czBuf[40];换成TCHAR  czBuf[40];也不行
      

  6.   

    char到CString的转化应该是
    CString str;
    char buf[40];
    str = "d:\\斯琴格日乐-早已经习惯了.mp3";
    buf = (LPSTR)(LPCTSTR)str;
      

  7.   

    CString str; 
         str = "d:\\斯琴格日乐-早已经习惯了.mp3";
         LPTSTR lpsz; 
         lpsz = new TCHAR[str.GetLength()+1]; 
         _tcscpy(lpsz, str); 
         char buf[40];
         strcpy(buf,lpsz);
      

  8.   

    或者
    char *buf; 
    CString str("d:\\斯琴格日乐-早已经习惯了.mp3"); 
    buf=str.GetBuffer(str.GetLength());
      

  9.   

    呵呵,来个简单的.int i = 0 ;
    for(i=0 ; i<=csTest1.GetLength()-1 ; i++)
    {
        czBuf[i] = csTest1[i] ;
    }
    czBuf[i] = '\0' ;
      

  10.   

    格式错了~!~!
    应该是CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";