美文网首页从汇编到C++
win32中的宽字符

win32中的宽字符

作者: Asura_Luo | 来源:发表于2018-05-04 02:39 被阅读0次

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";

相关文章

  • win32中的宽字符

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

  • Emoji 中的组合字符与零宽字符

    问题背景的产生:iOS - NSString 与 Emoji[https://www.jianshu.com/p/...

  • ios-开发中常用NSString 处理判断

    1.获取字符串宽高 /** * 获取字符串宽高 * * @param string 字符串 * @param fo...

  • 正则表达式 笔记

    元字符量词字符类分支条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配其它 元字符 ...

  • 正则表达式

    【目录】一、元字符二、字符转义三、重复四、字符类五、分枝条件六、分组七、反义八、后向引用九、零宽断言十、负向零宽断...

  • RapidXML 对 wchar_t 支持的问题

    最近在项目中发现, RapidXML 虽然使用了模板用于支持 wchar_t 宽字符. 但实际上, 其对于宽字符的...

  • 宽窄字符

    头文件: 窄字符 char 类型 宽字符 wchar_t 类型 通用类型

  • 第2章 基本类型

    1.算术类型 宽字符和unicode 字符型char/signed char/unsigned charchar ...

  • API与宽字符

    API与宽字符 API(Application Programming Interface,应用程序编程接口) A...

  • PHP宽字符注入

    在使用PHP连接MySQL的时候,当设置"set character_set_client=gbk"的时候 会导致...

网友评论

    本文标题:win32中的宽字符

    本文链接:https://www.haomeiwen.com/subject/qnyrrftx.html