- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - mbstowcs() 函数
C 的stdlib库 mbstowcs() 函数用于将 'str' 指向的多字节字符字符串转换为 'pwcs' 指向的数组。
转换后的字符存储在 'pwcs' 指向的数组的连续元素中。
目标数组最多只能容纳 n 个宽字符。
语法
以下是 mbstowcs() 函数的 C 库语法:
size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)
参数
此函数接受以下参数:
pwcs − 它表示指向 wchar_t 元素数组的指针,该数组足够长,可以存储最多 n 个字符的宽字符串。
str − 它表示指向需要转换的以 null 结尾的多字节字符串的第一个元素的指针。
n − 它表示 'pwcs' 指向的数组中存在的最大 wchar_t 字符数。
返回值
此函数返回转换的字符数,不包括 null 字符。如果找到无效的多字节字符,则返回 -1。
示例 1
在这个例子中,我们创建一个基本的 c 程序来演示 mbstowcs() 函数的使用。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <wchar.h> #include <locale.h> int main() { // UTF-8 encoded multibyte string const char *mbstr = "zß?\xF0\x9F\x8D\x8C"; // Set locale for UTF-8 setlocale(LC_ALL, "en_US.utf8"); // Wide character array wchar_t wcs[5]; size_t len = mbstowcs(wcs, mbstr, 5); if (len != (size_t)-1) { wprintf(L"Wide string: %ls\n", wcs); } else { perror("Conversion error"); } return 0; }
输出
以下是输出:
Conversion error: Invalid or incomplete multibyte or wide character
示例 2
下面的 c 示例使用 mbstowcs() 函数将多字节字符串转换为宽字符字符串。
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <locale.h> int main() { // Multibyte string const char *mbstr = "Hello, world!"; // Set locale for UTF-8 setlocale(LC_ALL, "en_US.utf8"); // Wide character array (adjust size as needed) wchar_t wcs[20]; size_t len = mbstowcs(wcs, mbstr, sizeof(wcs) / sizeof(wcs[0])); if (len != (size_t)-1) { wprintf(L"Wide string: %ls\n", wcs); } else { perror("Conversion error"); } return 0; }
输出
以下是输出:
Wide string: Hello, world!
示例 3
让我们创建另一个 c 程序来转换多字节字符串为宽字符字符串,并显示宽字符。
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <locale.h> int main() { // Multibyte string const char *mbstr = "Hello World \n This is tutorialspoint"; // Set locale for UTF-8 setlocale(LC_ALL, "en_US.utf8"); // Wide character array (adjust size as needed) wchar_t wcs[25]; size_t len = mbstowcs(wcs, mbstr, sizeof(wcs) / sizeof(wcs[0])); if (len != (size_t)-1) { wprintf(L"Wide string: %ls\n", wcs); } else { perror("Conversion error"); } return 0; }
输出
以下是输出:
Wide string: Hello World This is tut
广告