C++ 宽字符

28 Aug 2024 | 5 分钟阅读

引言

宽字符char 数据类型类似,但 宽字符占用两倍空间,因此可以容纳更大的值。char256 个可能值对应于 ASCII 表的条目。相反,宽字符可以接受多达 65536 个值,这些值是 UNICODE 值UNICODE 是一个相对较新的全球标准,它支持几乎所有语言和常用符号的字符编码。

宽字符的类型是 wchar_t,就像 char 是字符常量的类型一样。根据所使用的编译器,此 数据类型 的大小可以是 24 字节日语是使用 wchar_t 数据类型的国际语言的一个常见示例。

下面显示了在普通 C++ 中使用 wchar_t 的示例

输出

Wide character value:: 67
Size of the wide char is:: 4

说明

宽字符字面量宽字符字符串 字面量以 字母 L 为前缀,这会通知编译器 charstring宽字符类型

使用 宽字符类型时,在 扫描 (wcin)打印 (wcout) 等操作中会 加前缀 w

宽字符类型的数组或字符串

宽字符类型数组字符串也是可能的,就像 char 类型数组字符串一样。以下是 C++ 中宽字符类型数组字符串的示例

示例

输出

JavaTpoint
JavaTpoint

宽字符数组需要两倍的内存来编码每个字符,但输出保持不变。

宽字符数组字符串的函数

头文件 cwchar 包含大多数宽字符数组字符串函数的定义。

wcslen()

它返回 宽字符串的长度。它相当于 Strlen 的宽字符。

语法

下面提供了一个简单的 C++ 实现,演示了如何确定宽字符数组字符串的长度。

输出

The length of 'JavaTpoint' is 10

wcscpy()

wcscpy() 指的是 宽字符字符串复制strDestination 指向的宽字符数组接收由 strSource 指向的 宽字符字符串。这是 Strcpy 的宽字符等效项。

语法

示例

以下是使用 wcscpy 的简单 C++ 实现

输出

Original = javatpoint
Copy = javatpoint

wcscat()

wcscat() 指的是 宽字符字符串连接。它将 strSource 中的宽字符串副本 添加strDestination 中的宽字符串。它与 strcat 的宽字符等效。

语法

示例

以下是使用 wcscat 的简单 C++ 实现

输出

Concatenated wide string is = JavaTpoint is for JTP

wcscmp()

此函数称为 宽字符字符串比较()。如果 wcs1wcs2 相等,则返回 0;如果 wcs1 中不匹配的 第一个宽字符 的值高于 wcs2,则返回大于零的值。如果 wcs1 中不匹配的第一个宽字符的值低于 wcs2,它也会返回小于零的值。它是 Strcmp 的宽字符对应项。

语法

constwchar_t* wcs1, constwchar_t* wcs2, int wcscmp;

示例

以下是使用 wcscmp 的简单 C++ 实现

输出

Compare1 = 1
Compare2 = 0
Compare3 = -1

wcstok()

此函数的正式名称是 宽字符字符串令牌化()

语法

识别由 str 指向的带空终止符的宽字符串中的下一个令牌。由 delim 指向的带 空终止符 的宽字符串用于识别 分隔符wcstok 使用 ptr 指针将其 内部状态 存储在 wchar_t* 类型的对象中。与 strtok() 相比,它使用宽字符。

示例

下面提供的 C++ 实现演示了 wcstok 的使用

输出

JavaTpoint
is
for
JTP

wcsncpy()

它将 源的第一个 n 个宽字符复制到目标。如果在复制 n 个字符之前发现源宽字符串的末尾,则目标将用额外的 空宽字符 填充,直至总共 n 个字符。它等同于 strncpy() 的宽字符。

语法

wchar_t* wcsncpy(wchar_t* destination, constwchar_t* source, size_t n);

示例

以下是使用 wcsncpy 的 C++ 实现:

输出

Java T Point
Java T Point
Java ;???????

wcsstr()

语法

它返回 wcs1wcs2 第一次出现的指针。如果 wcs2 不是 wcs1 的组成部分,则返回 空指针。这里,要扫描的 宽字符字符串wcs1 表示,要匹配的序列在 wcs2 中找到。它等同于 strstr() 的宽字符。

示例

下面提供了一个简单的 C++ 实现,演示了如何使用 wcsstr

输出

Java T point