SDK编程笔记-UNICODE篇

发表于:2007-07-01来源:作者:点击数: 标签:
SDK编程笔记-UNICODE篇 [简单基础但重要] Petzold的Programming Windows 的第2章非常详细的讲解了关于Unicode的方方面面。我们需要知道的是它给C语言和Windows编程带来的变化。 ·C语言相关 对应于char, C语言中也有宽字符内型wchar_t。wchar_t被定义为: ty

SDK编程笔记-UNICODE篇

[简单基础但重要]

  Petzold的Programming Windows的第2章非常详细的讲解了关于Unicode的方方面面。我们需要知道的是它给C语言和Windows编程带来的变化。

·C语言相关

  对应于char, C语言中也有宽字符内型wchar_t。wchar_t被定义为: typedef unsigned short wchar_t ;显然它是16位的。wchar_t类型的常字串应该这样写: L"hello" 。因此可以这样定义一个宽字符指针 wchar_t *pwc=L"hello";。
  对于字符串函数, C语言中也有两个版本。如对应于strlen有wcslen,wprintf是printf的宽字符版。当然这两个版本的函数使用各自类型的参数,原因是显然的,char和unsigned short 怎么能等同呢?编译器是不会放过你的。
  下表是对char,wchar_t相关内容的比较:

clearcase/" target="_blank" >cccccc>
测试环境:VC++6.0) char类型 wchar_t类型
类型大小(32位系统) 8位 16位
常量字符表示法 ´A´ L´A´ 或 ´A´
常量字符串表示法 ´hello´ L´hello´
一些使用方法 char c=´A´; (c的值:0x41) wchar_t wc=´A´; (wc的值:0x0041)
char* p=´hello´; wchar_t* pw=L"hello";
sizeof sizeof("hello")=6 sizeof(L"hello")=12
计算长度 strlen("hello")=5 wcslen(L"hello)=5

原文转自:http://www.ltesting.net