字符基础 -- ASCII, DBCS, Unicode
所有的 string 类都是以C-style字符串为基础的。C-style 字符串是字符数组。所以我们先介绍字符类型。这里有3种编码模式对应3种字符类型。第一种编码类型是单子节字符集(single-byte character set or SBCS)。在这种编码模式下,所有的字符都只用一个字节表示。ASCII是SBCS。一个字节表示的0用来标志SBCS字符串的结束。
第二种编码模式是多字节字符集(multi-byte character set or MBCS)。一个MBCS编码包含一些一个字节长的字符,而另一些字符大于一个字节的长度。用在Windows里的MBCS包含两种字符类型,单字节字符(single-byte characters)和双字节字符(double-byte characters)。由于Windows里使用的多字节字符绝大部分是两个字节长,所以MBCS常被用DBCS代替。
在DBCS编码模式中,一些特定的值被保留用来表明他们是双字节字符的一部分。例如,在Shift-JIS编码中(一个常用的日文编码模式),0x81-0x9f之间和 0xe0-oxfc之间的值表示"这是一个双字节字符,下一个子节是这个字符的一部分。"这样的值被称作"leading bytes",他们都大于0x7f。跟随在一个leading byte子节后面的字节被称作"trail byte"。在DBCS中,trail byte可以是任意非0值。像SBCS一样,DBCS字符串的结束标志也是一个单字节表示的0。
第三种编码模式是Unicode。Unicode是一种所有的字符都使用两个字节编码的编码模式。Unicode字符有时也被称作宽字符,因为它比单子节字符宽(使用了更多的存储空间)。注意,Unicode不能被看作MBCS。MBCS的独特之处在于它的字符使用不同长度的字节编码。Unicode字符串使用两个字节表示的0作为它的结束标志。
单字节字符包含拉丁文字母表,accented characters及ASCII标准和DOS操作系统定义的图形字符。双字节字符被用来表示东亚及中东的语言。Unicode被用在COM及Windows NT操作系统内部。
你一定已经很熟悉单字节字符。当你使用char时,你处理的是单字节字符。双字节字符也用char类型来进行操作(这是我们将会看到的关于双子节字符的很多奇怪的地方之一)。Unicode字符用wchar_t来表示。Unicode字符和字符串常量用前缀L来表示。
分享到:
相关推荐
VC++字符串截取总结 VC++字符串截取是指在VC++中对字符串进行截取、提取和操作的技术。本文将对VC++字符串截取进行总结,包括CString类的常用方法、char*字符串的截取方法等。 CString类的截取方法 CString类是...
在VC++编程环境中,字符串处理是一项至关重要的任务。VC++,即Microsoft Visual C++,提供了多种方式来处理和转换字符串,这些方式主要涉及到标准C++库、MFC(Microsoft Foundation Classes)以及Windows API。本...
【VC++字符识别程序】是一种基于C++编程语言开发的应用,用于实现手写字符的识别功能。在现代技术中,字符识别(OCR,Optical Character Recognition)是一项关键的技术,广泛应用于文档扫描、图像处理和自动数据...
关于字符串与十六进制码之间的转化,网上到是有不少理论方法,但是可用的没多少,专门写一个demo的更是没有。所以我自己写了一个实例(PS:用VC++6.0写的)上传,以便于遇到这个问题的人能更快的解决这个问题。
在VC++编程中,字符串处理是一项基础且重要的任务。"字符串隐藏源码"这个主题可能涉及到的是如何在程序中安全地存储和处理敏感信息,比如密码、密钥或其他隐私数据,防止它们在代码中明文出现,降低被恶意攻击的风险...
【VC++字符串处理详解】 在VC++编程中,理解和熟练掌握字符串处理是非常关键的技能。本文将深入探讨VC++中的几种主要字符串类型及其相互转换,包括CString、BSTR、LPCTSTR以及它们与其他字符串类型的交互。 1. ...
在这个"vc++字符串容错功能"的项目中,我们很可能会看到如何在VC++中实现一种增强的字符串操作机制,它具有高度的容错能力,能够处理常见的错误情况,如内存溢出、空指针异常等。 首先,让我们了解一下`std::string...
在本项目"VC++ 字符OCR 识别"中,开发者使用C++编程语言,结合相关库实现了这一功能。以下是关于该项目涉及的知识点的详细解释: 1. VC++:全称Visual C++,是Microsoft开发的一款集成开发环境,用于编写C++代码。...
这个一个用vc++实现的字符串分割类库,很实用
在VC++编程环境中,字符串处理是非常常见的任务,而CString是Microsoft MFC(Microsoft Foundation Classes)库提供的一种方便、高效的字符串类。它提供了丰富的成员函数,用于处理和操作字符串。在这个主题中,我们...
CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); if(0x0d==nChar) //回车 { m_strLine.Empty();... m_ptOrigin.y+=tm.tmHeight;... COLORREF clr=dc.SetTextColor(dc.GetBkColor());...
在这个特定的上下文中,我们聚焦于VC++编程语言中处理字符串的方法,以实现免杀策略。在VC++中,字符串是程序中常见且重要的数据类型,用于存储和操作文本信息。免杀技术通常涉及对字符串的编码、混淆或动态生成,以...
在VC++编程环境中,进行不同进制之间的转换以及处理字符与数字之间的对应关系是常见的任务。本文将详细讲解VC++中涉及的转换方法,包括字符串转数字、数字转字符串以及通用的相互转换方法。 ### 字符串转数字 ####...
在VC++环境中,字符串处理是编程中不可或缺的一部分。本文将深入探讨如何在VC++中进行字符串的读取,包括基本的字符串类型、输入输出、字符串操作函数以及涉及到的内存管理等知识点。 首先,VC++中主要使用的字符串...
在VC++编程环境中,处理字符串是一项常见的任务,特别是在涉及到日期和时间的解析时。这个项目“vc++识别字符串中的时间”旨在实现一个功能,能够识别包含汉字和英文的混合文本字符串中不同格式的时间表示,并将其...
在VC++编程环境中,MFC(Microsoft Foundation Classes)是一个强大的库,它为Windows应用程序开发提供了丰富的功能,包括字符串处理和网络编程。MFC基于C++,使得开发者可以使用面向对象的方式来构建应用程序。在这...
一个VC++可重用的字符串处理函数集,这些函数主要包括: IsNumeric——检查串是否为数字串 Upcase——变成大写串 right——从右到左截掉字符 Lowercase——变成小写串 Trim——截掉串尾的空格 ...
//字符串转整型 long int char2long(char* sz) { if (strlen(sz)==0) return 0; long num=0,num2=0; if(strlen(sz)) { for (int i=0;i(sz);i++) { memcpy(&num2,sz+i,1); num2=num2-'0'; num=num*...
字符串生成二维码图片,经测试,手机可扫描出字符串
在VC++编程环境中,处理运算表达式字符串是一个常见的任务,特别是在需要动态计算或者解析用户输入时。本主题探讨的是如何实现一个能够解析并求值包含四则运算以及三角和反三角函数的表达式字符串。这样的功能可以...