std::wstring 转化std::string
时间: 2023-11-14 20:05:47 浏览: 40
可以使用下面的代码将 std::wstring 转换为 std::string:
```cpp
#include <locale>
#include <codecvt>
// Convert wstring to string
std::string wstring_to_string(const std::wstring& wstr)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
return converter.to_bytes(wstr);
}
```
使用方法:
```cpp
std::wstring wstr = L"Hello world!";
std::string str = wstring_to_string(wstr);
```
其中,std::codecvt_utf8 是一个标准库提供的 UTF-8 编码器,std::wstring_convert 可以将 wchar_t 类型的字符串转换为其他编码格式的字符串。
相关问题
std::string 转 std::wstring
要将std::string转换为std::wstring,可以使用以下代码:
```cpp
#include <locale>
#include <codecvt>
std::wstring s2ws(const std::string& str)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
return converter.from_bytes(str);
}
```
这里使用了std::wstring_convert和std::codecvt_utf8<wchar_t>来进行转换。首先,std::wstring_convert是一个通用的转换类模板,它可以将任何一种字符类型转换为另一种字符类型。其次,std::codecvt_utf8<wchar_t>是一个转换器,它可以将UTF-8编码的字符串转换为宽字符类型(wchar_t)的字符串。
在上面的代码中,我们首先创建了一个std::wstring_convert<std::codecvt_utf8<wchar_t>>类型的对象converter,然后调用它的from_bytes函数将std::string类型的字符串转换为std::wstring类型的字符串。
std::string 转std::wstring
你可以使用标准库中的`std::wstring_convert`来进行`std::string`到`std::wstring`的转换。下面是一个示例代码:
```cpp
#include <locale>
#include <codecvt>
#include <string>
std::wstring stringToWstring(const std::string& str) {
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
return converter.from_bytes(str);
}
```
你可以使用`stringToWstring`函数将`std::string`类型的字符串转换为`std::wstring`类型的字符串。例如:
```cpp
std::string utf8String = "Hello, world!";
std::wstring wideString = stringToWstring(utf8String);
```
这样就可以将UTF-8编码的字符串转换为宽字符编码的字符串。请注意,这里假设输入的`std::string`是以UTF-8编码的,如果是其他编码,请相应调整。
希望这可以帮到你!如有其他问题,请随时提问。