在本节中,我们将看到什么是 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(). 它有助于标记使用宽字符创建的字符串。需要分隔符来标记字符串。 |