windows——字符 字符串
2017-07-11 00:43
218 查看
字符
c标准支持两种字符数据类型:char:正常字符,字长8-bit
wchar_t:宽字符,字长16-bit
因此每个带字符(串)参数API就必须包含两个版本:
char版本,比如计算字符串长度strlen
wchar_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为WNDCLASSA
windows 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,其包含字符(串)类型字段
相关文章推荐
- 《Windows Via C/C++》边学习,边翻译(三)操作字符和字符串-2
- 《Windows Via C/C++》边学习,边翻译(五)操作字符和字符串-4
- C/C++,Windows/MFC, char, wchar_t, TCHAR 字符全总结 & c++字符串操作经验集
- 字符与字符串操作——Windows via C/C++
- 【笨嘴拙舌WINDOWS】字符类型与字符串
- windows字符和字符串处理
- 《Windows Via C/C++》边学习,边翻译(六)操作字符和字符串-5
- Windows Via C/C++ Part Ⅰ Chapter 2: 字符和字符串(4)
- Windows Via C/C++ Part Ⅰ Chapter 2: 字符和字符串(3)
- Windows编程-1-字符和字符串处理相关知识点总结
- 【Windows 核心编程】Windows 核心编程 -- 字符和字符串处理
- 《Windows Via C/C++》边学习,边翻译(四)操作字符和字符串-3
- Windows Via C/C++ Part Ⅰ Chapter 2: 字符和字符串(2)
- Windows中不允许用来创建文件名或者目录名的字符及字符串
- Windows核心编程--错误处理/字符/字符串
- Windows中字符与字符串
- 求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出?
- Windows Via C/C++ Part Ⅰ Chapter 2: 字符和字符串(1)
- windows编程中字符和字符串的处理
- 《Windows Via C/C++》边学习,边翻译(二)操作字符和字符串-1