编写Unicode程序的六个准则
2007-07-30 23:58
204 查看
六个准则:
将文本串视为字符数组,而不是chars数组或者字节数组。
将通用数据类型(如 TCHAR 和 PTSTR )用于文本字符和字符串。
将显式数据类型(如 BYTE 和 PBYTE )用于字节、字节指针和数据缓存。
将 TEXT 宏用于原义字符和字符串。
执行全局性替换(如用 PTSTR 替换PSTR )。
字符串运算公式: sizeof(szBuffer) = nCharacters * sizeof(TCHAR)。比如传递缓存大小应该用 sizeof(szBuffer)/sizeof(TCHAR) 替换 sizeof(szBuffer);分配内存用 nCharacters * sizeof(TCHAR )替换 nCharacters。
一些说明:
RTL库:typedef unsigned short wchar_t;
_UNICODE宏:wcs 替换 str,比如 wcscmp() 替换 strcmp();Tchar.h 替换 String.h
Generic-Text Data Type Mappings
Windows库:
UNICODE宏:xxA() 或者 xxW()
PTSTR --> PSTR 或者 PWSTR (同LP或者PC或者LPC)
TCHAR --> CHAR 或者 WCHAR
TBYTE --> BYTE 或者 WBYTE
将文本串视为字符数组,而不是chars数组或者字节数组。
将通用数据类型(如 TCHAR 和 PTSTR )用于文本字符和字符串。
将显式数据类型(如 BYTE 和 PBYTE )用于字节、字节指针和数据缓存。
将 TEXT 宏用于原义字符和字符串。
执行全局性替换(如用 PTSTR 替换PSTR )。
字符串运算公式: sizeof(szBuffer) = nCharacters * sizeof(TCHAR)。比如传递缓存大小应该用 sizeof(szBuffer)/sizeof(TCHAR) 替换 sizeof(szBuffer);分配内存用 nCharacters * sizeof(TCHAR )替换 nCharacters。
一些说明:
RTL库:typedef unsigned short wchar_t;
_UNICODE宏:wcs 替换 str,比如 wcscmp() 替换 strcmp();Tchar.h 替换 String.h
Generic-Text Data Type Mappings
Generic-text data type name | SBCS (_UNICODE, _MBCS not defined) | _MBCS defined | _UNICODE defined |
---|---|---|---|
_TCHAR | char | char | wchar_t |
_tfinddata_t | _finddata_t | _finddata_t | _wfinddata_t |
_tfinddata64_t | __finddata64_t | __finddata64_t | __wfinddata64_t |
_tfinddatai64_t | _finddatai64_t | _finddatai64_t | _wfinddatai64_t |
_TINT | int | int | wint_t |
_TSCHAR | signed char | signed char | wchar_t |
_TUCHAR | unsigned char | unsigned char | wchar_t |
_TXCHAR | char | unsigned char | wchar_t |
_T or _TEXT | No effect (removed by preprocessor) | No effect (removed by preprocessor) | L (converts following character or string to its Unicode counterpart) |
UNICODE宏:xxA() 或者 xxW()
PTSTR --> PSTR 或者 PWSTR (同LP或者PC或者LPC)
TCHAR --> CHAR 或者 WCHAR
TBYTE --> BYTE 或者 WBYTE
相关文章推荐
- 编写更少bug的程序的六条准则
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议6~10)
- 程序编写准则与提升
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议11~15)
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)
- 在VC6.0编写Unicode程序
- 在VC++2005 MFC Unicode下编写网络程序需要注意的问题
- Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)
- 用汇编语言编写查表程序
- Go TCP网络程序编写
- Starting your first golang program. 编写golang程序的"Hello World!"
- 使用java编写的冒泡排序小程序
- C语言编写51单片机程序:键控流水灯
- 几个DSP高手的经验介绍,编写基于DSP程序的注意事项
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写跨平台Java程序应注意的12条事项
- 编写一个程序用于控制其他应用程序窗口的隐藏和显示:
- 使用C#编写的一个定时关机程序
- 怎么编写简单程序判断电脑是大端cpu还是小端cpu