win32中的宽字符

win32中的宽字符

宽字符

数据类型 容器、模板
ASCII 一个字符 一个字节
GB码(扩展了的ASCII) 英文字符 一个字节
GB码 中文字符 两个字节
UNICODE字符集(unicode编码实际指的是utf-16) 常用字符 两个字节

宽字符: 用多个字节来表示的字符称之为宽字符(只要不是以单字节存储都可称为宽字符)

注:宽字符不等同与UTF-16更不等同与UNICODE

wchar_t 宽字符类型

C/C++中对宽字符定义了一个类型 wchar_t 用来存储两字节宽度的宽字符

常用的字符串操作字符

strlen()        wcslen()
strcmp()        wcscmp()
strcat()        wcscat()
strcpy()        wcscpy()


wchar_t arr[] = L"Hello World";
printf("%d \r\n",wcslen(arr));

在同一个项目工程里务必只使用一种编码规则,一面发生管理紊乱

Windows定义了一系列新的类型

原生 win32
typedef char CHAR
typedef short SHORT
typedef int INT
typedef long LONG
typedef unsigned long DWORD
typedef int BOOL
typedef unsigned char BYTE
typedef unsigned short WORD
typedef float FLOAT

不同项目间合作 单字符和宽字符的问题

常规解决方案(不推荐):

  1. 事先约定使用同一种编码规范

  2. 在接口处通过某些函数完成两种编码的转换

    MultiByteToWideChar()
    WideCharToMultiByte()
    

微软爸爸的解决方案:

TCHAR 类型

VC6中 :定义

#ifdef UNICODE
    typedef wchar_t TCHAR;
#else
    typedef unsigned char TCHAR;

使用

TCHAR arr[] = TEXT"Hello World";
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UTF-8 编码提供了一种简便而向后兼容的方法, 使得那种完全围绕 ASCII 设计的操作系统, 比如 Unix,...
    谢大见阅读 10,273评论 0 3
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,423评论 0 7
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,885评论 6 13
  • 关键词:回忆、八音盒、家乡(三选二) 又到了最不喜欢的节日——清明,陈君不明白,为什么明明是悲伤的习俗,却要以放假...
    yhlbksld阅读 952评论 0 1
  • 程辉事到如今只想求红舒饶他一命,但不幸的是,在刚才的搏斗中,他的舌头被伤到,已经不能清晰自如地表达自己的意思。 您...
    穆慈安阅读 3,793评论 87 15