char czBuf[40];//TCHAR 也不行
CString csTest1="d:\斯琴格日乐-早已经习惯了.mp3";
CString csTest2;
strcpy(czBuf,csTest1.GetBuffer(0));结果csBuf[]里成了:"?早已经习惯了.mp3",在内存里看的时候仍是:"d:\斯琴格日乐-早已经习惯了.mp3"
最后:
csTest2=czBuf;
结果发现csTest2里为:"?早已经习惯了.mp3"前面的字符掉丢了.
请问这种问题怎么办?
CString csTest1="d:\斯琴格日乐-早已经习惯了.mp3";
CString csTest2;
strcpy(czBuf,csTest1.GetBuffer(0));结果csBuf[]里成了:"?早已经习惯了.mp3",在内存里看的时候仍是:"d:\斯琴格日乐-早已经习惯了.mp3"
最后:
csTest2=czBuf;
结果发现csTest2里为:"?早已经习惯了.mp3"前面的字符掉丢了.
请问这种问题怎么办?
CString s = p;
或CString s(p);
保证没问题。
这句错了吧
应该是
CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
CString s(_T("This is a test"));
LPCTSTR p = s;
这是一种略微硬性的转换据我所知还有另外两种方法,不过这种方法最安全。
改成
CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";
发贴时写错了。而且把char czBuf[40];换成TCHAR czBuf[40];也不行
CString str;
char buf[40];
str = "d:\\斯琴格日乐-早已经习惯了.mp3";
buf = (LPSTR)(LPCTSTR)str;
str = "d:\\斯琴格日乐-早已经习惯了.mp3";
LPTSTR lpsz;
lpsz = new TCHAR[str.GetLength()+1];
_tcscpy(lpsz, str);
char buf[40];
strcpy(buf,lpsz);
char *buf;
CString str("d:\\斯琴格日乐-早已经习惯了.mp3");
buf=str.GetBuffer(str.GetLength());
for(i=0 ; i<=csTest1.GetLength()-1 ; i++)
{
czBuf[i] = csTest1[i] ;
}
czBuf[i] = '\0' ;
应该是CString csTest1="d:\\斯琴格日乐-早已经习惯了.mp3";