C++ 中的宽字符和库函数

在本节中,我们将看到什么是 C++ 中的宽字符。我们还将看到一些用于处理宽字符的函数。

宽字符类似于字符数据类型。主要区别在于 char 占用 1 个字节的空间,而宽字符占用内存中的 2 个字节(有时为 4 个字节,取决于编译器)空间。对于 2 字节空间宽字符,可以容纳 64K (65536) 个不同的字符。所以宽字符可以容纳 UNICODE 字符。UNICODE 值是国际标准,允许对任何语言的任何字符进行编码。

示例

#include<iostream>
using namespace std;
int main() {
   wchar_t wide_character = L'a';
   cout << "宽字符是: " << wide_character << endl;
   cout << "宽字符尺寸: " <<sizeof(wide_character);
}
输出结果
宽字符是: 97
宽字符尺寸: 2

我们可以看到,要制作宽字符,我们必须在字符字面量之前添加“L”。但是字符值不会显示在使用 cout 的输出中。所以要使用宽字符,我们必须使用 wcout,而为了获取输入,我们必须使用 wcin。

我们可以制作一些宽字符数组,并将它们打印为字符串。

示例

#include<iostream>
using namespace std;
int main() {
   char str1[] = "This is character array";
   cout << str1 << endl;
   wchar_t str2 [] = L"This is wide character array";
   wcout << str2;
}
输出结果
This is character array
This is wide character array

现在让我们看看一些用于宽字符的函数。

功能描述
wcslen()语法是 size_t wcslen (const wchar_t* wcs); 该函数用于获取宽字符串的长度。
wcscat()语法是: wchar_t *wcscat(wchar_t *strDest, const wchar_t *strSrc); 此函数用于连接源字符串与目标字符串。
wcscpy()语法是 wchar_t *wcscpy(wchar_t *strDest, const wchar_t *strSrc); 它有助于将源字符串复制到目标字符串。
wcsncpy()语法是 wchar_t* wcsncpy(wchar_t* dest, const wchar_t* src, size_t n); 此函数用于将源的前 n 个字符复制到目标。当 end os source 小于 n 时,那么在目的地会有一些空字符。
wcscmp()语法是 int wcscmp(const wchar_t* wcs1, const wchar_t* wcs2); 该函数用于比较两个宽字符串 wcs1 和 wcs2。它就像strcmp()普通字符串比较的函数。
wcsstr()语法是 const wchar_t* wcsstr (const wchar_t* wcs1, const wchar_t* wcs2); 该函数用于在 wcs1 中找到 wcs2 的第一次出现。如果不存在,则返回 null
wcstok()语法为 wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr); 这个功能就像strtok(). 它有助于标记使用宽字符创建的字符串。需要分隔符来标记字符串。