CString s(_T("abcdefg"));
我在msdn中看到的一个产生字符串的例子,
请问其中_T()是什么意思?
不如直接用CString s="abcdefg"就行了
两者有什么区别?像msdn这么做有什么好处?

解决方案 »

  1.   

    _T是个宏,依据你当前是否有_UNICODE宏标志,来决定
    后面的字符串字面量是ANSI的,还是宽字符的。这个问题详细阅读Window核心编程第二章。
      

  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);