【发布时间】:2020-08-07 09:36:14
【问题描述】:
我想将数据类型char16_t 转换为utf8,为此我编写了以下代码:
// utf16 String
char16_t *wchs = u"UTF16 string";
// A converter object
wstring_convert<codecvt_utf8_utf16<char16_t>, char16_t> conv;
// Convert from utf16 to utf8
string str = conv.to_bytes(wchs);
// print the UTF-16 string after converting to UTF-8
cout << str << endl;
无论是 2015 年还是 2017 年,前面的代码在 Visual Studio 中都不起作用,特别是“char16_t”数据类型,并给我一个错误:error LNK2001: unresolved external symbol "public: static class std::locale::id std::codecvt<char16_t,char,struct _Mbstatet>::id" (?id@?$codecvt@_SDU_Mbstatet@@@std@@2V0locale@2@A),
但在 GCC 编译器中运行良好。
为什么会发生这种情况以及如何解决这个问题?
【问题讨论】: