LPCTSTR和char*之间怎样相互转换?LPCTSTR是不是unicode码?

解决方案 »

  1.   


    以下摘自 MS的头文件// ANSI (Multi-byte Character) types
    typedef CONST CHAR *LPCSTR, *PCSTR;#ifdef  UNICODE                     // r_winnt
    typedef unsigned short WCHAR;    // wc,   16-bit UNICODE character
    typedef CONST WCHAR *LPCWSTR, *PCWSTR;
    typedef LPCWSTR LPCTSTR;typedef LPCSTR LPCTSTR;如果没有定义UNICODE,LPCTSTR实际上就是CONST char *
    如果定义了UNICODE,LPCTSTR实际上变成了unsigned short用CString或WideCharToMultiByte来处理
      

  2.   

    同意楼上的。
    LPCTSTR 就是char*
    复制方法就是char* 和char*的复制方法
    用strcpy(char*,char*,int length);
      

  3.   

    include "stdafx.h"     //#include <windows.h>
    #include <stdio.h>#include <stdlib.h>
    int main(int argc, char* argv[])
    {
            char* cBuf="This is a Test!\n";        LPCTSTR lpsz=(LPCTSTR)malloc(200*sizeof(char*));        sprintf((LPTSTR)lpsz,"%s",cBuf);
            
            printf("%s",lpsz);
            free((void*)lpsz);
            return 0;
    }
      

  4.   

    如果定义了UNICODE,LPCTSTR实际上变成了unsigned short
    MyConvertToChar()
    {
      USES_CONVERSION; 
      LPCTSTR lpsz = L"23456";
      char* lpszT = OLE2T(lpsz);
    }
      

  5.   

    上面的函数用错了,在UNICODE环境下,不能用OLE2T
    应该用W2CA
    char* lpszT = W2CA(lpsz);
      

  6.   

    LPCTSTR分析:LP:long型指针;C:常量;T:和_T含义一样,应该是UNICODE型;STR:字符串。
    char* 就等于LPSTR。
    char* p;
    LPCTSTR lp;
    p = (LPSTR)lp;
      

  7.   

    LPCTSTR lp;
    CString str =lp;
    char *p;
    LPCTSTR转换 char*
    p =new char[lp.GetLength()]
    memcpy(p,sizeof(lp),str);
    char* 转换 LPCTSTR 
    lp = p;
      

  8.   

    to romanticist(让我拥抱你入梦):
       在UNICODE环境下,你的方法还能用吗?