如何把 LPSTR 型转换成 LPCWSTR 型?char[] to LPSTR 或 CString to LPSTR 又该如何呢?

解决方案 »

  1.   

    指针可以直接强行转换。注意:CString 只能转换成LPCTSTR 不能转换成LPSTR。
    GetBuffer和ReleaseBuffer函数是为了解决使用strcpy时字符串会超过缓冲区大小的情况. LPCTSTR 重载操作符获得的字符串指针不能作为左值修改其中数据,因为这有可能引起指针越界或使该指针无效.所以要使用Getbuffer和ReleaseBuffer如下:
    CString str;
    str = "abcdef";
            //strcpy(LPCTSTR(str), "1234567890");是行不通的.
    LPTSTR pStr = str.GetBuffer(16); //如果不重新分配的话,可能造成                                         //指针越界
    lstrcpy(pStr, "1234567890");
    str.ReleaseBuffer(5);   //释放缓冲到指定的字符串长度
            现在的字符串是"12345"
      

  2.   

    typedef CHAR *LPSTR, *PSTR;所以说定义一个数组:char pszName[] = "12313";
    其pszName即是个LPSTR指针。