char* 转成 std::wstring
时间: 2023-06-25 15:07:45 浏览: 52
你可以使用以下代码将 `char*` 转换为 `std::wstring`:
```cpp
#include <locale>
#include <codecvt>
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
std::wstring wide_str = converter.from_bytes(char_str);
```
其中,`char_str` 是要转换的 `char*` 字符串。
解释一下上面的代码:
1. `std::codecvt_utf8<wchar_t>` 是一个将 UTF-8 编码的字符串转换成宽字符字符串的转换器。
2. `std::wstring_convert` 是一个用于字符串转换的实用工具类。它接受一个转换器作为模板参数,并提供了方便的接口进行字符串转换。
上述代码中,我们创建了一个 `std::wstring_convert` 对象,并将 UTF-8 转换器作为模板参数传递给它。然后,我们使用 `from_bytes` 函数将 `char*` 字符串转换为 `std::wstring` 宽字符字符串。
相关问题
char转std::wstring
可以使用下面的代码将char类型的字符串转换为std::wstring类型:
```cpp
#include <locale>
#include <codecvt>
std::wstring str2wstr(const char* str)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
return converter.from_bytes(str);
}
```
该代码使用了std::codecvt_utf8_utf16类来完成UTF-8和UTF-16之间的转换。在调用该函数之前,需要确保已经包含了<locale>和<codecvt>头文件。
std::wstring转std::u32string
std::wstring是C++中的一种字符串类型,用于存储宽字符(wchar_t类型)的字符串。而std::u32string是C++11引入的一种字符串类型,用于存储UTF-32编码的字符串。
要将std::wstring转换为std::u32string,可以使用以下步骤:
1. 首先,需要包含头文件<locale>和<codecvt>,以便使用std::wstring_convert进行转换。
2. 创建一个std::wstring_convert对象,并指定其转换类型为从wchar_t到char32_t。
```cpp
std::wstring_convert<std::codecvt_utf8<char32_t>, wchar_t> converter;
```
3. 使用std::wstring_convert的to_bytes函数将std::wstring转换为std::u32string。
```cpp
std::wstring wstr = L"Hello, 世界!";
std::u32string u32str = converter.to_bytes(wstr);
```
现在,你已经成功将std::wstring转换为std::u32string。