字符串前面加L表示该字符串是Unicode字符串。
_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。
以下是别人的总结:
一、在字符串前加一个L作用:
如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。
strlen("asd") = 3;
strlen(L"asd") = 6;
二、 _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式
如果你定义了UNICODE,那么_T宏会把字符串前面加一个L。这时 _T("ABCD") 相当于 L"ABCD" ,这是宽字符串。
如果没有定义,那么_T宏不会在字符串前面加那个L,_T("ABCD") 就等价于 "ABCD"
三、TEXT,_TEXT 和_T 一样的
如下面三语句:
TCHAR szStr1[] = TEXT("str1");
char szStr2[] = "str2";
WCHAR szStr3[] = L("str3");
那么第一句话在定义了UNICODE时会解释为第三句话,没有定义时就等于第二句话。
但二句话无论是否定义了UNICODE都是生成一个ANSI字符串,而第三句话总是生成UNICODE字符串。
为了程序的可移植性,建议都用第一种表示方法。但在某些情况下,某个字符必须为ANSI或UNICODE,那就用后两种方法。
别人的总结2:
你要确定你需要的字符串是宽字符还是窄字符。_T("")是说如果你定义了UNICODE 那么就是L"",没有定义就是"";以下情况用_T()比较好,其他情况最好别用:
1,用THCAR,LPTSTR,LPCTSTR等tchar数据类型的时候
2,用_tprintf之类的_t版本运行时函数时候
3,像下面这样有w和a版本的api,调用CreateFile的时候
#ifdef UNICODE
#define CreateFile CreateFileW
#else
#define CreateFile CreateFileA
#endif // !UNICODE
分享到:
相关推荐
在VC++编程环境中,涉及到字符编码时,经常会遇到L、_T()以及TEXT()这三个符号。这些符号主要用于处理不同字符编码格式,特别是涉及到Unicode和ANSI编码时。下面将详细阐述它们之间的区别和用法。 首先,Unicode是...
在C++编程中,字符类型和字符串处理是基础且重要的部分。`char`, `_wchar_t`, `_TCHAR`, `__T()`, `L`, 宏`__T`, `TEXT`, `_TEXT`, 和 `L` 都是与字符编码和跨平台兼容性紧密相关的概念。 1. **`char`**: 这是最...
总结一下,_T()宏在VC++编程中扮演了关键角色,它确保了字符串在ASCII和Unicode环境之间的兼容性,简化了跨编码平台的代码迁移。通过使用_T()宏,开发者可以编写一次代码,而无需担心字符编码的问题,从而提高了代码...
### _bstr_t 和 _variant_t 的详细介绍 #### 一、引言 在COM(Component Object Model)开发中,为了确保跨平台与跨语言的数据交换兼容性,常常会使用到特殊的封装类型,如_bstr_t和_variant_t。这两种类型不仅在...
在 C/C++ 中,为了编写能够同时支持 ANSI 和 Unicode 编码的代码,引入了 `TCHAR` 和 `_T()` 宏。 - **`TCHAR`**: 这个类型定义在 `<tchar.h>` 头文件中,其具体定义取决于是否定义了 `_UNICODE` 宏。如果定义了 `_...
**WMI(Windows Management Instrumentation)是微软提供的一种在Windows操作系统上进行系统管理的标准接口,它允许应用程序通过标准的查询语言(WQL)获取和控制系统资源的信息。本教程将聚焦于如何使用C++在VC2005...
`CString`、`wchar_t`、`int`、`string`和`char*`都是编程中常用的字符串和数值类型,它们之间互相转换有助于在不同场景下灵活地处理数据。本篇文章将详细介绍这些类型之间的转换方法。 首先,`CString`是Microsoft...
【L_Y_T的模板】是一个包含了C++编程学习者L_Y_T个人整理或收集的代码集合,主要聚焦于数据结构和算法的应用。这个压缩包中包含了一系列与C++编程相关的练习和实例,如各种类型的平衡树和线段树的实现。下面将详细...
在C++编程中,`wchar_t` 和 `char` 是两种不同的字符类型,它们分别用于处理宽字符和窄字符。`wchar_t` 通常用于表示多字节字符,如Unicode编码,而 `char` 通常用于ASCII编码。当需要在两者之间进行转换时,必须...
本资源提供了 C++ 中 Unicode 和 SBCS(Single Byte Character Set,单字节字符集)函数的对照表,对于_char_和_TCHAR_类型的字符操作函数的使用非常有帮助。下面是对照表中的部分知识点解释: 1. 字符操作函数 在...
在C++编程中,字符和字符串的转换是常见的操作,特别是在处理不同的编码格式时,如ASCII、Unicode(包括UTF-8)等。本主题将详细讲解C++中用于字符串和字符转换的一些关键函数,以及如何在实践中应用它们。 1. `std...
### VC++中的char, wchar_T和TCHAR详解 在VC++开发环境中,处理文本数据时,程序员经常会遇到三种字符类型:`char`、`wchar_T` 和 `TCHAR`。这些类型的选择对于确保代码的兼容性和效率至关重要。本文将详细介绍这三...
在C++编程中,获取计算机的内存和其他硬件信息通常涉及到操作系统接口的调用。Windows Management Instrumentation(WMI)是Microsoft提供的一种强大的管理工具,它允许程序员通过编程方式访问和操作系统的各种信息...
C++提供了多种方法来处理和操作字符串,包括标准库中的`std::string`类以及MFC库中的`CString`类。本篇文章将深入探讨如何在C++的`std::string`和`CString`中检测特定的子字符串。 ### `std::string`类的字符串查找...
1. **形状定义**:游戏中的每一块都由四个单元格组成,有七种不同的形状(I、O、T、S、Z、J、L)。在C++中,这可以通过定义一个结构体或类来实现,每个形状都有其特定的排列方式。 2. **游戏板**:游戏界面通常是一...
在C++中,我们通常会定义一系列的结构体来表示不同的方块形状,如I、O、J、L、S、Z和T型方块。每个方块由四个单元格组成,每个单元格的位置可以通过二维数组表示。同时,我们需要一个二维数组来表示游戏板,用于存储...
《C++程序设计_谭浩强_答案_修改版.pdf》这本书主要涵盖了C++语言的基础知识,通过一系列的编程题目来帮助读者理解和掌握C++的基本语法和编程技巧。以下是其中部分题目的解析: 1.5 题展示了如何在C++中使用`cout`...
在本主题中,我们将深入探讨如何在C++中正确地打印和处理中文字符,以及如何解决可能出现的乱码问题。 首先,我们需要了解字符编码的基本概念。在计算机中,中文字符通常由多个字节表示,如GBK编码每个中文字符由2...
Visual Studio 2010(VS2010)是微软发布的一款集成开发环境(IDE),广泛用于C++和其他语言的开发。VS2010支持MFC(Microsoft Foundation Classes)和 ATL(Active Template Library)等Windows开发框架,并且包含...