str = _T("abc");  和 str = "abc";有何不同

解决方案 »

  1.   

    如果你不想涉及国际化编程,两者几乎就是一样的。但强烈建议使用第一种,它可以方便的使你的程序支持Unicode。另外,建议使用_t打头的字符串函数(它们是被定义在tchar.h中的宏),你可以打开tchar.h文件看看。对于你 的问题,如果你不支持 Unicode ,两者将是一样的。如果你支持Unicode 的话,_T("abc")将被转化成L"abc"。所谓的Unicode字符 就是通常说的宽字节字符。
      

  2.   

    这是为了维护单一源码。
    如果定义了_UNICODE标识符,那么"abc"在内存里就占8个字节。mfc 是这样定义的:#define __T(x) __T(x)
    #define TEXT(x) __T(x)#ifdef _UNICODE
    #define __T(x) L##x
    #else
    #define __T(x)
    #endif