TCHAR

定义

TCHAR :通过define 定义的字符串宏

因为C++支持两种字符串:常规的ANSI编码 (使用""包裹)、Unicode编码(使用L" "包裹)。因此对应的有两套字符串处理函数。

比如:strlen 和 wcslen  分别用于处理两种字符串

使用

微软将这两套 字符集 及其 操作 进行了统一。通过条件编译(_UNICODE 和 UNICODE宏)控制实际使用的字符集,因此出现了

_T(" ") 这样的字符串。与之对应的就有了 _tcslen 这样的函数。

TCHAR 类型,就是用来存储这样的通用字符的。

当没有定义_UNICODE宏时,TCHAR = char , _tcslen = strlen

当定义了_UNICODE宏时,TCHAR = wchar_t , _tcslen = wcslen

当我们定义了UNICODE宏,就相当于告诉编译器:我要用UNICODE版本。这时候,TCHAR就摇身一变,变成 wchar_t 类型。而没有定义UNICODE 宏的时候,TCHAR 摇身一变,变成unsigned char 类型。这样可以很好的切换 “宽窄”字符集。

TCHAR 可用于双字节字符串,使程序可以用于中、日、韩、等国语言文字处理、显示。简化编程。

时间: 2024-10-11 07:09:06

TCHAR的相关文章

String,CString,TCHAR,char之间区别和联系

char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是char还是w_char; TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符 #ifdef UNICODE   typedef wchar_t TCHAR;   #else   typedef char TCHAR;   #endif 所以用MBCS来build时,TCHAR是char,使用UN

QString 和 TCHAR 的相互转换

参考资料: http://www.cnblogs.com/fuyanwen/p/3200536.htmlhttp://www.cnblogs.com/wendao/archive/2012/07/27/2612597.html 不能直接用: QString szqFileName = QString::fromLocal8Bit("data");const char* szName = szqFileName.toLocal8Bit().constData(); // 返回的 QByt

关于 char 、 wchar_t 、 TCHAR 、 _T() ||| 宏 _T 、 TEXT 、 _TEXT 、 L

char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned short wchar_t. 为了让编译器识别Unicode字符串,必须以在前面加一个"L",定义宽字节类型方法如下: wchar_t c = `A' ;wchar_t * p = L"Hello!" ;wchar_t a[] = L"Hello!"

[C++] zlatlcv: ATL字符串转换辅助库。能很方便的将UTF-8字符串转为TCHAR等字符串

作者:zyl910 如今,UTF-8字符串的使用频率越来越多了.但是在VC中,不能直接处理UTF-8字符串,得专门去写UTF-8与窄字符串.宽字符串.TCHAR字符串相互转换的代码.不仅费时费力,而且稍不留心就容易造成内存泄露问题.于是我便想专门编写个库来解决UTF-8字符串编码问题. 特性——支持 TCHAR,能随时切换项目字符集配置.兼容 32位(x86)与64位(x64)Windows环境.兼容 VC2005 及更高版本的 VC. 一.设计思路 ATL中的字符串转换宏用起来很方便,于是我打

推荐的tchar.h中的字符串处理函数

在网上找类似_tcslen的函数集,但是居然找不到,又想到我常常要用到,所以我就自己来整理了,主要是通过看tchar.h的源代码来整理的. 在这之前,先看一下下面的代码: #ifdef _UNICODE #define _tcslen  wcslen #else #define _tcslen strlen #endif 可以看出来,系统也提供了UNICODE版本的字符串处理函数,但是为了编程方面的规范和方便,我觉得还是使用类似_tcslen的函数比较好,虽然比较难记,但是用多了就记得了.下面开

tchar.h的源代码

下一章会整理一下tchar.h里常见的字符串处理函数,这一章没有给出全部的代码,就给出了一些主要的宏定义 /* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */ #include <wchar.h> #ifdef __cplusplusextern "C" {#endif /* __cplusplus */ #ifndef _WCTYPE_T_DEFINEDtypedef unsigned short wint_t;t

char,wchar_t,CHAR,WCHAR,TCHAR,PSTR,PCSTR,PCTSTR,_T,_TEXT,L

首先,这是一个字符集的问题.在ANSI字符集中,字符类型是char,在UNICODE字符集中,字符类型是wchar_t,也可以称之为宽字符,宽字符占两个字节. 然后,我们来看一段定义代码: //winnt.h typedef char CHAR; //8位 typedef wchar_t WCHAR; //16位 typedef CHAR *PCHAR; typedef CHAR *PSTR; typedef CONST CHAR  *PCSTR; typedef WCHAR *PWCHAR;

【转】TCHAR

TCHAR 就是当你的字符设置为什么就是什么例如: 当程序编译为    ANSI,    TCHAR 相当于 CHAR当程序编译为 UNICODE, TCHAR 相当于WCHAR char       : 单字节变量类型,最多表示256个字符 wchar_t : 宽字节变量类型,用于表示Unicode字符 它实际定义在<string.h>里:typedef unsigned short wchar_t. 为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下:

char与TCHAR相互转化

char与TCHAR相互转化 char strUsr[10] = "Hello"; TCHAR Name[100]; #ifdef UNICODE MultiByteToWideChar(CP_ACP, 0, strUsr, -1, Name, 100); #else strcpy(Name, strUsr); #endif TCHAR转char char* ConvertLPWSTRToLPSTR (LPWSTR lpwszStrIn) { LPSTR pszOut = NULL;