有点前景:我的任务需要将UTF-8 XML文件转换为UTF-16(当然还有正确的标题)。所以我搜索了将UTF-8转换为UTF-16的常用方法,并发现应该使用<codecvt>
中的模板。
但现在当它是deprecated时,我想知道执行相同任务的新常用方法是什么?
(根本不介意使用Boost,但除此之外我更喜欢尽可能地靠近标准库。)
答案 0 :(得分:22)
答案 1 :(得分:16)
std::codecvt
的 <locale>
模板本身并未弃用。对于UTF-8到UTF-16,仍有std::codecvt<char16_t, char, std::mbstate_t>
专业化。
但是,由于std::wstring_convert
和std::wbuffer_convert
与标准转换构面一起被弃用,因此没有任何简单的方法可以使用构面转换字符串。
所以,正如Bolas已经回答的那样:自己实施(或者你可以像往常一样使用第三方库)或继续使用已弃用的API。
答案 2 :(得分:4)
新的方式是......你自己写的。或者只是依赖于已弃用的功能。希望标准委员会实际上删除 codecvt,直到有替代功能。
但目前还没有。