c++ string转wchar*
时间: 2023-12-01 14:04:09 浏览: 38
您好!关于您的问题,您可以使用以下代码将C++中的C-style字符串(const char*) 转换成Unicode格式的字符串(wchar_t*):
```c++
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
const char* cstr = "Hello, world!"; // C-Style字符串
const size_t cstr_len = strlen(cstr) + 1; // C-Style字符串长度(包括空字符)
const size_t wchar_buf_size = cstr_len * sizeof(wchar_t); // 用于存放wchar_t的缓冲区大小
wchar_t* wstr = (wchar_t*)malloc(wchar_buf_size); // 分配缓冲区
// 将C-Style字符串转换成Unicode格式的字符串
mbstowcs_s(nullptr, wstr, wchar_buf_size, cstr, cstr_len);
// 输出结果
wcout << wstr << endl;
free(wstr); // 释放缓冲区
return 0;
}
```
注意,在可移植性的考虑下,应该使用mbstowcs_s()函数来进行C-style字符串到Unicode字符串的转换。这个函数不仅可以转换成Unicode字符串,而且还能够进行越界检查,从而有效地避免缓冲区溢出等问题。
希望能解决您的问题!如果您还有什么疑问,欢迎再次提问。