在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
或某些解决方法吗?
答案 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));