他们之间怎么转换?
什么情况下可以相互替代使用?
还有用CString可以访问到字符串中的字符吗?怎么访问?

解决方案 »

  1.   

    一个字符串的包装类
    LPTSTR lpstr = (LPTSTR)(LPCTSTR)str;//记不清了,是个强制转化操作符。不过不建议这么用,详细清看effective c++;
      

  2.   

    LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VC++中,还有类似的字符串类型,如LPTSTR、LPCTSTR等
    CString操作的字符类型是TCHAR。CString theString( "This is a test" );
    LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; CString theString( "This is a test" );
    LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
    _tcscpy(lpsz, theString); 
    若将char*转换成CString,直接赋值就可以
      

  3.   

    转化是可以的,但不建议这么做。因为CString中的字符串是由这个类本身管理的,你要是想要最好通过它的接口获得。要是直接获得它的数据存储指针并改变了其中数据的话,在CString自己操作本身数据时就容易出错。
    想要得到指向CString内字符串的指针有两种方法:一是通过CString重载的操作符(LPCTSRT);第二是调用CString::GetBuffer()。
    要访问CString内的某个字符可以调用CString重载的操作符[]。如:
    CString str("abc");
    char temp=str[1];//temp='b'