windows核心编程学习日记-字符和字符串处理 上篇
来源:互联网 发布:淘宝网网站需求分析 编辑:程序博客网 时间:2024/05/18 11:35
Unicode字符:
一般情况下,每个Unicode字符都是用UTF-16编码,UTF的全称是Unicode Transformation Format(Unicode转换形式),UTF
将每个字符编码为2个字节(或者说是16位,一个字节占8位).
目前在Windows操作系统编程中,主要是使用的Unicode字符,为什么要用Unicode字符呢,我的认为最重要的几点是:
1.Windows内部的一切工作都是使用Unicode字符和Unicode字符串来进行的.所以加入我们坚持传入ANSI字符或者是ANSI字符串,
Windows就会被迫分配内存,并将ANSI字符或字符串转换为等价的Unicode形式.所以,Unicode提升了应用程序的效率.占用内存更
少.
2.使用Unicode,应用程序的代码很容易与COM集成(后者要求使用Unicode字符和Unicode字符串).
声明ANSI字符和Unicode字符的区别:
1.ANSI:
//8位字符
char c = 'A';
//字符串
char szBuffer[100] = "A String";
2.Unicode:
//16位字符
wchar_t c =L 'A';
//字符串
wchar_t szBuffer[100] = L "A String";
字符串之前的大写字母 “L” 通知编译器该字符串应当编译为一个Unicode字符串.
以下是Windows开发团队自己定义的数据类型,在WinNT.h头文件中:
//8位
typedef char CHAR;
typedef CHAR *PCHAR;
typedef CHAR *PSTR;
typedef CONST CHAR *PCSTR
//16位
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
typedef WCHAR *PWSTR;
typedef CONST WCHAR *PCWSTR;
以及
typedef _nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR;
前缀_nullterminated是一个头部注解,它描述了一个类型如何用作函数的参数和返回值.
在写代码的时候,可以使用ANSI和Unicode字符/字符串使其能通过编译:
#ifdef Unicode
typedef WCHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST WCHAR *PCTSTR;
#define __TEXT(quote) quote
#define __TEXT(quote) ##quote
#else
typedef CHAR TCHAR, *PTCHAR, PTSTR;
typedef CONST CHAR *PCTSTR;
#define __TEXT(quote) quote
#endif
#define TEXT(quote) __TEXT(quote)
利用这些类型和宏,无论是使用ANSI还是Unicode字符都能通过编译.
- windows核心编程学习日记-字符和字符串处理 上篇
- 【Windows 核心编程】Windows 核心编程 -- 字符和字符串处理
- Windows核心编程:字符和字符串处理
- 字符和字符串处理 《Windows核心编程》
- Windows核心编程:字符和字符串处理
- Windows核心编程 字符和字符串处理
- windows核心编程心解--字符和字符串处理
- Windows核心编程(二)字符和字符串处理
- 《Windows核心编程5》第二章-字符和字符串处理
- Windows核心编程笔记——字符和字符串处理
- Windows核心编程002-字符和字符串处理
- windows核心编程 第2章 字符和字符串处理
- 《Windows核心编程》读书笔记二 字符和字符串处理
- windows核心编程系列学习记录2——字符和字符串处理
- Windows核心编程--错误处理/字符/字符串
- WINDOWS核心编程学习笔记--字符串处理
- 《Windows核心编程》——二字符与字符串处理
- 《Windows核心编程》读书心得——字符和字符串处理(1)
- 微信不需要更多只会赞美的哈巴狗
- 第十七周项目6——学生成绩统计
- 感受
- wxPython结合cocos2d-x开发编辑器
- ios初学SQLite3(创建、插入、查询、更新数据库和表)
- windows核心编程学习日记-字符和字符串处理 上篇
- <meta name="name" content="string">
- Using SMTP, Gmail, and STARTTLS
- GNU C函数嵌套定义及闭包
- spring security3.x学习(20)_初探authorize标签和第四个例子
- UDP:socket服务端和接收端的基本使用实例
- 使用强制性的手段来结束一个进程
- LeetCode:Single Number II
- 算法导论-----------------0-1背包问题dp求解