我知道char转换为Tchar的语法是 
_T("hello") 
但是如果括号中的是变量怎么处理.? 
例如: 
char str[10] = "hello" 
我觉得就应该写成 _T(str) .
但是调试的时候却出错了.. 
提示 “Lstr”: 未声明的标识符.. 
请问如果括号中是变量的话应该怎么来转换,谢谢.

解决方案 »

  1.   

    _T()是一个宏,并不是函数,所以不能这样用。如果要转换到unicode,要用函数MultiByteToWideChar
      

  2.   

    _T宏是定义字符串常量用的,char型字符串转换为WCHAR型字符串是用MultiByteToWideChar,MSDN中有例子,如果用MFC,可以用A2T宏来实现char型字符串向TCHAR型字符串转换。最好程序中都使用TCHAR,这样通常不需要做转换。
      

  3.   

    楼主有时间看看《windows核心编程》,上面讲的很清楚。。
      

  4.   

    char str[10] = "hello" 
    gothin,你在定义时,就应该用TCHAR来替换char。
    例如
    TCHAR str[10] = _T("hello")
    而不是把_T(str)这样用
      

  5.   

    JoeDuke,我的意思就是如何把char转换成TCHAR.
    如果不用那样转换的话,我今天的问题就不会存在了.
    你说的方法我知道,可能我现在的问题是如果char是变量我应该怎么处理.
    楼上有人说MultiByteToWideChar可以转..但是百度了很久,还是不知道怎么处理.
      

  6.   

    下面是一些例子(请注意大写S 和小写s 的使用): char szA[100];             //An ANSI string buffer
    WCHAR szW[100];            //A Unicode string buffer//Normal sprintf:all strings are ANSI
    sprintf(szA, "%s","ANSI Str");//Converts Unicode string to ANSI
    sprintf(szA,"%S",L"Unicode Str");//Normal swprintf:all strings are Unicode
    swprintf(szW,L"%s",L"Unicode Str");//Converts ANSI string to Unicode
    swprintf(szW,L"%S", "ANSI Str");
      

  7.   

    唉,给个例子吧.都不对.
    我在程序里先是这么写的: TCHAR Name[100] = _T("Hello");调试的时候完全正常,没有错误,但是我按照下面这样写: char strUsr[10] = "Hello";
    TCHAR Name[100] = _T(strUsr);然后按调试的时候就提示TCHAR Name[100] = _T(strUsr)有错误.
    错误信息是:“LstrUsr”: 未声明的标识符。
    重点是我现在的程序没有其他的办法,必须牵涉到把一个char类型的变量转换成TCHAR.
    如果我之前就一直定义TCHAR,就不能把另一个void的char类型的参数传递过来,
    但是如果我定义char的话,就出现现在的情况了..
    头都想大了,一直想不出该怎么办.所以,拜托各位了.. 真的是头都大了,想了一下午了..
      

  8.   

    试试...char strUsr[10] = "Hello";
    TCHAR Name[100];
    sprintf(Name, "%s", strUsr);
      

  9.   

    char strUsr[10] = "Hello";
    TCHAR Name[100];
    MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100);顺便提一下,如果不是Unicode字符集,就不需要转换,直接复制即可,如果不确定是否使用Unicode字符集,可以这样写:
    char strUsr[10] = "Hello";
    TCHAR Name[100];
    #ifdef UNICODE
    MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100);
    #else
    strcpy(Name, strUsr);
    #endif