windows——字符 字符串

xiaoxiao2021-02-28  114

字符

c标准支持两种字符数据类型: char:正常字符,字长8-bitwchar_t:宽字符,字长16-bit 因此每个带字符(串)参数API就必须包含两个版本: char版本,比如计算字符串长度strlenwchar_t版本,比如计算字符串长度wcslen

API

windows开发使用两套独立API: c标准API,windows开发使用宏_UNICODE控制c标准API的char版本和wchar_t版本,_UNICODE宏定义,c标准API使用wchar_t版本,否则c标准API使用char版本windows API,windows开发使用宏UNICODE控制windows API的char版本和wchar_t版本,UNICODE宏定义,windows API使用wchar_t版本,否则windows API使用char版本 注:尽管使用_UNICODE和UNICODE这样的宏名称,但wchar_t字符(串)并非使用UNICODE编码,千万不要混淆

c标准API

windows使用宏_UNICODE控制c标准API的char版本和wchar_t版本,为使c标准API的char版本和wchar_t版本调用统一,windows在tchar.h中使用宏统一定义了字符数据类型,字符串和c标准API中带字符(串)参数API 字符数据类型:TCHAR或_TCHAR,_UNICODE宏定义,TCHAR或_TCHAR为wchar_t,否则TCHAR或_TCHAR为char字符串:__T(x)或_T(x)或_TEXT(x),_UNICODE宏定义,__T(x)或_T(x)或_TEXT(x)为whcar_t字符串版本,否则__T(x)或_T(x)或_TEXT(x)为char字符串版本c标准API:_UNICODE宏定义,API为wchar_t版本,否则为char版本,比如_tcslen,_UNICODE宏定义,_tcslen为wcslen,否则_tcslen为strlen 注1:tchar.h并非c标准一部分,只是为了使char版本和wchar_t版本程序代码统一,使用tchar.h统一定义了char版本和wchar_t版本字符数据类型,字符串,带字符(串)参数API,在windows开发中,为了兼容统一性,务必使用tchar.h中字符数据类型,字符串,带字符(串)参数API 注2:对于带字符(串)参数c标准API,char版本无前缀,wchar_t版本以wc前缀,TCHAR或_TCHAR版本以_tc前缀

windows API

windows使用宏UNICODE控制windows API的char版本和wchar_t版本,为使windows API的char版本和wchar_t版本调用统一,windows在winnt.h中使用宏统一定义了字符数据类型,字符串,在winuser.h等头文件中使用宏统一定义了带字符(串)字段windows struct或union,带字符(串)参数(直接或间接)windows API 字符数据类型:TCHAR,UNICODE宏定义,TCHAR为wchar_t,否则TCHAR为char字符串:__TEXT(x)或TEXT(x),UNICODE宏定义,__TEXT(x)或TEXT(x)为wchar_t字符串版本,否则__TEXT(x)或TEXT(x)为char字符串版本windows struct或union:UNICODE宏定义,struct或union为wchar_t版本,否则为char版本,比如WNDCLASS,UNICODE宏定义,WNDCLASS为WNDCLASSW,否则WNDCLASS为WNDCLASSAwindows API:UNICODE宏定义,API为wchar_t版本,否则为char版本,比如MessageBox,UNICODE宏定义,MessageBox为MessageBoxW,否则MessageBox为MessageBoxA 注1:对于带字符(串)字段windows struct或union,char版本以A后缀,wchar_t版本以W后缀,TCHAR版本无后缀 注2:对于带字符(串)参数(直接或间接)windows API,char版本以A后缀,wchar_t版本以W后缀,TCHAR版本无后缀 注3:直接字符(串)参数指参数类型为字符(串),间接字符(串)参数指参数类型为windows struct或union,其包含字符(串)类型字段
转载请注明原文地址: https://www.6miu.com/read-45800.html

最新回复(0)