char * ,wchar_t * ,WCHAR * , TCHAR *

原创 2011年01月18日 14:27:00

char * ,wchar_t * ,WCHAR * , TCHAR *

常用的字符串类型有:char * ,wchar_t * ,WCHAR * , TCHAR *
char *
    最基本的类型,其对应的一组处理函数是以str...开头的标准的ANSI C字符串函数。
wchar_t *
    是这样定义的:typedef unsigned short wchar_t;
    另外,在头文件中有这样的定义:typedef wchar_t WCHAR; 所以WCHAR实际就是wchar_t
    wchar_t * 是16-bit UNICODE character(宽字符)所使用的基本类型。
其对应的一组处理函数是以wcs...开头的标准的字符串函数。

常用的字符串处理函数和宏:
1、str 开头的 函数 处理SBCS字符串
2、wcs 开头的 函数 处理宽字符串,wcs是宽字符串的英文缩写
    所有的unicode函数均以wcs开头。若要调用Unicode函数,只需用前缀wcs来取代ANSI字符串函数的前缀str即可。
    对于每一个标准的ANSI C字符串函数,基本都有等价的unicode函数.
3、_mbs 开头的 函数 处理DBCS字符串
    微软还在它的CRT(C runtime library)中增加了操作DBCS字符串的版本。Str***()函数都有对应名字的DBCS版本_mbs***()。
    如果你料到可能会遇到DBCS字符串(如果你的软件会被安装在使用DBCS编码的国家,如中国,日本等,你就可能会),你应该使用_mbs***()函数,因为他们也可以处理SBCS字符串。(一个DBCS字符串也可能含有单字节字符,这就是为什么_mbs***()函数也能处理SBCS字符串的原因)。微软还提供了几个函数方便对dbcs的处理 , 见后面的描述。
    如果只是调用strlen函数,那么你无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。ANSI的C运行期库中没有配备相应的函数,使你能够对双字节字符集进行操作。但是,Microsoft Visual C++的运行期库却包含许多函数,如_mbslen ,它可以用来操作多字节(既包括单字节也包括双字节)字符串。
4、_tcs 开头的 宏 配合TCHAR使用
    根据预定义分别扩展为str wcs _mbs, 见后面的描述。
5、l开头的windows自带的宽字符处理函数

6、大小写兼有的windows自带的宽字符处理函数

    5和6见后面的描述

 

更进一步的字符串以及其指针的类型定义

 由于Win32 API文档的函数列表使用函数的常用名字(例如, "SetWindowText"),所有的字符串都是用TCHAR来定义的。(除了XP中引入的只适用于Unicode的API)。下面列出一些常用的typedefs,你可以在msdn中看到他们。

type                Meaning in MBCS builds          Meaning in Unicode builds
WCHAR                 wchar_t                             wchar_t
LPSTR                   char*                                char*
LPCSTR                 const char*                        const char*
LPWSTR                wchar_t*                           wchar_t*
LPCWSTR              const wchar_t*                    const wchar_t* 
TCHAR                  char                                  wchar_t
LPTSTR                 TCHAR*                            TCHAR*
LPCTSTR               const TCHAR*                     const TCHAR*

VC++中的char,wchar_t,TCHAR用法

总体简介: 由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类型,他紧紧是一个宏。我们都知道,宏在预编译的时候会被替换成相应的...
  • bestone0213
  • bestone0213
  • 2015年05月20日 10:21
  • 1137

C++字符类型TCHAR、char和wchar_t

1、首先,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。 2、wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式,wc...
  • h_wlyfw
  • h_wlyfw
  • 2014年03月04日 09:44
  • 3211

VC++中的char,wchar_t,TCHAR(转载)

1.VC++中的char,wchar_t,TCHAR(转载) 总体简介: 由于字符编码的不同,在C++中有三种对于字符类型:char, wchar_t , TCHAR。其实TCHAR不能算作一种类...
  • haiross
  • haiross
  • 2015年04月17日 09:57
  • 889

C/C++,Windows/MFC, char, wchar_t, TCHAR 字符全总结 & c++字符串操作经验集

字符类型、字符指针类型、字符串字面值 字符类型:     char, wchar_t, CHAR, WCHAR, TCHAR, UCHAR, BYTE, TBYTE     char      ...
  • u010003835
  • u010003835
  • 2015年08月07日 20:48
  • 1411

utf-8 utf-16对比windows系统下wchar_t和char中文字符的二进制对比

对比的源程序(cpp) : // 针对汉字的utf-8 和utf-16对比 #include "stdafx.h" #include "windows.h" #include #include ...
  • ustb_atrx
  • ustb_atrx
  • 2015年12月25日 10:43
  • 1434

wchar_t和char,WCHAR和CHAR的区别和互相转化

win32应用程序的低层winnt.h头文件: #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; ...
  • xukaiwen_2016
  • xukaiwen_2016
  • 2016年07月31日 14:18
  • 5242

TCHAR 与const wchar_t *等的转换

TCHAR 与const wchar_t *等的转换 1) TCHAR 转换为const wchar_t *,直接强制转换,在TCHAR前面加上(*const wchar_t) ...
  • kingmax54212008
  • kingmax54212008
  • 2013年08月23日 18:53
  • 3266

Windows下char与TCHAR(WCHAR)相互转换

原文地址:http://blog.csdn.net/temotemo/article/details/7464445/* 包含头文件WinNls.h用到WINBASEAPI函数 函数原型 int...
  • temotemo
  • temotemo
  • 2012年04月16日 09:19
  • 4725

C++ WINDOWS下 wchar_t *和char * 相互转化总结篇

说道wchar_t和char两个类型大家都不会陌生 wchar_t:在windows下是Unicode 16编码,也就是俗称宽字节 char:当然就是指一个字节,在windows下面默认是gbk编码的...
  • lightspear
  • lightspear
  • 2017年01月23日 18:37
  • 5316

char wchar_t WCHAR TCHAR

1.区别wchar_t,char,WCHAR    ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。    U...
  • loveshare
  • loveshare
  • 2013年08月02日 09:49
  • 547
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:char * ,wchar_t * ,WCHAR * , TCHAR *
举报原因:
原因补充:

(最多只允许输入30个字)