VC++中的char,wchar_t,TCHAR
来源:互联网 发布:linux下的c ide 编辑:程序博客网 时间:2024/05/22 04:43
总体简介:
由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的内容。TCHAR 在使用多字节编码时被定义成char,在Unicode编码时定义成wchar_t。
大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱。为了统一,有必要把来龙去脉搞清楚。
为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
typedef unsigned short wchar_t;
不能使用类似 strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个 “L”,例如:
wchar_t *szTest=L"This is a Unicode string.";
下面在看看TCHAR。如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char或者wchar_t。如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。
以strcpy函数为例子,总结一下:
.如果你想使用ANSI字符串,那么请使用这一套写法:
char szString[100];
strcpy(szString,"test");
.如果你想使用Unicode字符串,那么请使用这一套:
wchar_t szString[100];
wcscpyszString,L"test");
.如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
TCHAR szString[100];
_tcscpy(szString,_TEXT("test"));
由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的内容。TCHAR 在使用多字节编码时被定义成char,在Unicode编码时定义成wchar_t。
大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱。为了统一,有必要把来龙去脉搞清楚。
为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
typedef unsigned short wchar_t;
不能使用类似 strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个 “L”,例如:
wchar_t *szTest=L"This is a Unicode string.";
下面在看看TCHAR。如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char或者wchar_t。如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。
以strcpy函数为例子,总结一下:
.如果你想使用ANSI字符串,那么请使用这一套写法:
char szString[100];
strcpy(szString,"test");
.如果你想使用Unicode字符串,那么请使用这一套:
wchar_t szString[100];
wcscpyszString,L"test");
.如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
TCHAR szString[100];
_tcscpy(szString,_TEXT("test"));
0 0
- VC++中的char,wchar_t,TCHAR
- VC++中的char,wchar_t,TCHAR
- VC++中的char,wchar_t,TCHAR
- VC++中的char,wchar_t,TCHAR
- VC++中的char,wchar_t,TCHAR
- 搞清楚VC++中的char,wchar_t,TCHAR
- 搞清楚VC++中的char,wchar_t,TCHAR
- 搞清楚VC++中的char,wchar_t,TCHAR
- 搞清楚VC++中的char,wchar_t,TCHAR (ZT)
- 搞清楚VC++中的char,wchar_t,TCHAR
- 搞清楚VC++中的char,wchar_t,TCHAR
- VC++中的char,wchar_t,TCHAR(转载)
- VC++中的char,wchar_t,TCHAR用法
- VC++中的char,wchar_t,TCHAR(转载)
- char * ,wchar_t * ,WCHAR * , TCHAR *
- char wchar_t WCHAR TCHAR
- TCHAR char wchar_t 的区别
- 从char/wchar_t到TCHAR
- .net怎么给控件添加样式
- Inside Microsoft.NET IL Assembler中的Forward Declaration问题
- IOS Sent Events 事件
- java中如何知道一个字符串中有多少个字,把每个字打印出来,举例
- /dev/null文件使用
- VC++中的char,wchar_t,TCHAR
- SQL Cookbook—查询、排序
- bash: ./configure: 权限不够
- 最小生成树(算法导论第23章)
- mysql 存储过程游标学习
- Maven属性
- linux 等待队列
- Cannot create a server using the selected type
- 指针和引用有什么区别 请写一个简单的程序说明