char *转wchar_t*
时间: 2023-10-19 11:05:45 浏览: 91
深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
要将char *转换为wchar_t *,可以使用mbstowcs函数。该函数将多字节字符串转换为宽字符字符串。
示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, ""); // 设置本地化环境
char *str = "Hello world";
size_t len = strlen(str) + 1;
wchar_t *wstr = malloc(len * sizeof(wchar_t));
if (wstr == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
mbstowcs(wstr, str, len);
wprintf(L"%ls\n", wstr);
free(wstr);
return 0;
}
```
在上面的代码中,我们首先设置本地化环境,以便正确处理多字节字符。然后,我们定义一个char *字符串,并计算它的长度。接下来,我们为wchar_t字符串分配内存,并使用mbstowcs函数将char *字符串转换为宽字符字符串。最后,我们使用wprintf函数打印宽字符字符串,并释放它的内存。
阅读全文