wchar_t* 转char*
时间: 2023-09-12 12:03:15 浏览: 113
可以使用一些函数来实现 wchar_t* 转 char* 的操作,下面提供两种常见的方式:
1.使用 wcstombs 函数进行转换:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
wchar_t wstr[] = L"Hello, world!";
// 计算需要的缓冲区大小
int len = wcstombs(NULL, wstr, 0);
char* cstr = new char[len + 1];
// 进行转换
wcstombs(cstr, wstr, len);
cstr[len] = '\0';
cout << cstr << endl; // 输出转换后的字符串
delete[] cstr; // 释放内存
return 0;
}
```
2.使用 WideCharToMultiByte 函数进行转换:
```c++
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
wchar_t wstr[] = L"Hello, world!";
int len = wcslen(wstr);
// 计算需要的缓冲区大小
int size = WideCharToMultiByte(CP_ACP, 0, wstr, len, NULL, 0, NULL, NULL);
char* cstr = new char[size + 1];
// 进行转换
WideCharToMultiByte(CP_ACP, 0, wstr, len, cstr, size, NULL, NULL);
cstr[size] = '\0';
cout << cstr << endl; // 输出转换后的字符串
delete[] cstr; // 释放内存
return 0;
}
```
需要注意的是,这两种方式都需要考虑字符集编码的问题,比如上面的示例中使用的是默认的 ANSI 编码,如果需要使用其他编码,需要进行相应的调整。
阅读全文