转换标准::basic_string<wchar_t>和标准::basic_string<uint16_t>

Convert std::basic_string<wchar_t> and std::basic_string<uint16_t>

本文关键字:gt basic 标准 string lt uint16 转换 wchar      更新时间:2023-10-16

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或一些解决方法?

首先,您需要确保,源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));