转换std :: basic_string <wchar_t>和std :: basic_string <uint16_t>

时间:2015-05-12 10:48:00

标签: c++ string c++11 stl wstring

在MacOS X 10.10中:CLang:

typedef basic_string<char, char_traits<char>, allocator<char> > string;
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;

我构建了一个字符串: std :: wstringstream ss;

ss << "[";
ss << "{";
ss << "x1:" << 111 << ",";
ss << "z1:" << 111;
ss << "},";
ss << "{";
ss << "x2:" << 222 << ",";
ss << "z2:" << 222;
ss << "}";
ss << "]";
std::wstring str = ss.str();

并且需要将str作为参数传递给期望std::basic_string<uint16_t>的函数并返回相同类型的字符串。

如何在std::basic_string<wchar_t>std::basic_string<uint16_t>之间进行转换以使用外部库函数?

允许使用C ++ 11。

可能会使用wstring_convert或某些解决方法吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要确保源std::basic_string<wchar_t>与输入std::basic_string<uint16_t>具有相同的编码。如果编码不同,您应该寻找特定的字符编码转换算法。否则你可以这样做。

std::basic_string<uint16_t> result;
std::copy(source.begin(), source.end(), std::back_inserter(result));