📅  最后修改于: 2023-12-03 15:13:57.317000             🧑  作者: Mango
在C++中,string和wstring都是非常常用的字符串类型。string是用来存储ASCII字符的,而wstring是用来存储Unicode字符的。在某些情况下,我们需要将string类型的字符串转换成wstring类型的字符串。下面是两种常用的方法。
C++11中引入了std::wstring_convert,可以方便地进行string和wstring之间的转换。具体用法如下:
#include <locale>
#include <codecvt>
std::string str = "hello";
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
std::wstring wstr = converter.from_bytes(str);
上面的代码中,wecht_t是wchar.h中定义的宽字符类型,std::codecvt_utf8是一个用于将UTF-8编码的字符串转换为宽字符的转换方式。通过这种方式,我们可以方便地将string类型的字符串转换成wstring类型的字符串。
另一种方法是使用wstringstream。具体用法如下:
#include <sstream>
std::string str = "hello";
std::wstringstream wss;
wss << str.c_str();
std::wstring wstr = wss.str();
上面的代码中,我们使用wstringstream将string类型的字符串转换成了wstring类型的字符串。需要注意的是,在将string类型的字符串插入到wstringstream中时,需要使用其c_str()方法。
以上就是将string类型的字符串转换成wstring类型的字符串的两种常用方法。在实际编程中,需要根据具体的场景选择不同的转换方式。