现在我有变量
TCHAR tmpBuf[1024];
wsprintf(tmpBuf,"DSN=Test16661\0"
"SERVER=(local)\0"
"DATABASE=EasyDial\0"
"DESCRIPTION=This is a test!");
我希望转为LPCTSTR类型的,但注意是有结束符的,我应该怎么写呢?

解决方案 »

  1.   

    把什么东西转为LPCTSTR类型阿?强制转换不行吗?
    LPCTSTR ptr = (LPCTSTR)tmpBuf;
      

  2.   

    不太明白你要干嘛。这样可以不,用_T()给你括一下:)TCHAR tmpBuf[1024];
    wsprintf(tmpBuf,_T("DSN=Test16661\0")
    _T("SERVER=(local)\0")
    _T("DATABASE=EasyDial\0")
    _T("DESCRIPTION=This is a test!"));
      

  3.   

    你要是想让buf里有中间带0的字串,可以用指针。TCHAR buf[1024];
    TCHAR* ptr = buf;
    lstrcpy(ptr, _T("DSN=Test16661\0"));
    ptr += (lstrlen(_T("DSN=Test16661\0")+1);//    把终止符跳过去
    lstrcpy(ptr, _T("SERVER=(local)\0"));
    ptr += (lstrlen(_T("SERVER=(local)\0")+1);//    把终止符跳过去
    lstrcpy(ptr, _T("DATABASE=EasyDial\0"));
    ptr += (lstrlen(_T("DATABASE=EasyDial\0")+1);//    把终止符跳过去
    lstrcpy(ptr, _T("DESCRIPTION=This is a test!"));
    ptr += (lstrlen(_T("DESCRIPTION=This is a test!")+1);//    把终止符跳过去
    LPCTSTR wantptr = buf;    //   LPCTSTR不就是 const TCHAR*  吗。
      

  4.   

    LS的大哥,你这么做好像最后PTR的结果什么也不是,你是在不断的lstrcpy是吗?
      

  5.   

    你想要什么呀?"希望转为LPCTSTR类型的",你是不是想把单字节字串转为宽字节字串?那也不是这么写的呀。LPCTSTR是const TCHAR*的typedef;系统定义UNICODE宏,他就是宽的,没定义,就是单的。你先搞清概念?再说你想要什么结果?
      

  6.   

    嗯嗯,楼上别这么激动,我来详细说一下我想要达到的目的
    我有变量
    char *dsn1; //假设会赋值Testw16661
    char *server1;//假设会赋值(local)
    char *database1;//假设会赋值EasyDial
    char *description1;//假设会赋值This is a test!LPCTSTR lpctstr1;现在我希望给lpcstr1赋值,最后结果为
    lpctstr1="DSN=Test16661\0SERVER=(local)\0DATABASE=EasyDial\0DESCRIPTION=This is a test!"我不知道应该怎么做,我尝试用
    TCHAR tmpbuf[1024];
    wprintf(tmpbuf,"DSN=%s\0SERVER=%s\0DATABASE=%s\0DESCRIPTION=%s",dsn1,server1,database1,description1);
    lpctstr1=tmpbuf;
    但这种方法没用,求教高手
      

  7.   

    强制转换不行吗?
    LPCTSTR ptr = (LPCTSTR)tmpBuf;
      

  8.   

    如果为了连接这几个字符串的话试试这样行不:
    CString st;
    st.format("%s%s%s%s",dsn1,server1,database1,description1);
    lpctstr1=st; //(如果为了使用指针的话)
      

  9.   

    就是我说的那个字符串拷贝了;你把我那段代码跑起来。ptr是中间变量,“LPCTSTR wantptr = buf;”这句话里面 wantptr是你要的,你把它改成你用的lpctstr1好了。跑起来后看看wantptr所指的内容,就是你想要的了。
      

  10.   

    真的不行,我跑过了,要不就是ODBC关于SQL Server的设置对字符串要求太BT了
      

  11.   

    你的跑起来以后,看到的结果是wantptr 为DSN=Test1666SERVER=(local\0DATABASE=EasyDia\0DESCRIPTION=This is a test!
    看到没有,每一项都差一个似的
      

  12.   

    早说你要一个连节SQL SERVER的字符串算了,说了半天以为你在讨论字符串编码问题。这问题应该在数据库版呀,发这里让人误会。给你找个连接字串"DSN=DSN_Name;UID=sa;PWD=pwd";ODBC连接,需要数据源名、用户名、用户密码。你那SERVER、DATABASE=EasyDial、DESCRIPTION部分都不需要。