字符串前加个_T是什么意思?如:
str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
直接写成:
str="Software\\Microsoft\\Windows\\CurrentVersion\\Run";不一样吗?

解决方案 »

  1.   

    _T 宏
    在已定义Unicode应的用程序中,其后跟的就是Unicode字符串,
    否则,就是Ansi字符串。
      

  2.   

    对字符串使用_T()宏,这是为了让代码至少有Unicode的意识。_T()宏在8位字符环境下是如下定义的:
    #define _T(x) x // 非Unicode版本(non-Unicode version)
    而在Unicode环境下是如下定义的:
    #define _T(x) L##x // Unicode版本(Unicode version)
    所以在Unicode环境下,它的效果就相当于:s.Format(L"%d", total);
      如果你认为你的程序可能在Unicode的环境下运行,那么开始在意用 Unicode 编码。比如说,不要用 sizeof() 操作符来获得字符串的长度,因为在Unicode环境下就会有2倍的误差。我们可以用一些方法来隐藏Unicode的一些细节,比如在我需要获得字符长度的时候,我会用一个叫做DIM的宏,这个宏是在我的dim.h文件中定义的,我会在我写的所有程序中都包含这个文件:#define DIM(x) ( sizeof((x)) / sizeof((x)[0]) )
      这个宏不仅可以用来解决Unicode的字符串长度的问题,也可以用在编译时定义的表格上,它可以获得表格的项数