win32中的宽字符

admin 2018年5月10日18:15:24评论521 views字数 789阅读2分37秒阅读模式
摘要

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


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

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月10日18:15:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   win32中的宽字符https://cn-sec.com/archives/51243.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息