C ++-不建议使用的标头<codecvt>替换

有点前景:我的任务需要将UTF-8 XML文件转换为UTF-16(当然具有正确的标头)。 因此,我搜索了将UTF-8转换为UTF-16的常用方法,发现应该使用<codecvt>中的模板。

但是现在不推荐使用它了,我想知道执行相同任务的新通用方式是什么?

(完全不介意使用Boost,但除此之外,我更喜欢尽可能接近标准库。)

login_not_failed asked 2020-01-14T09:41:23Z
3个解决方案
24 votes

不用担心

根据相同的信息来源:

该库组件应与一起退至附件D,   直到合适的替代品被标准化为止。

因此,在完成新的标准化,更安全的版本之前,您仍然可以使用它。

xmllmx answered 2020-01-14T09:42:24Z
18 votes

并不建议使用std::wbuffer_convert本身中的std::wstring_convert模板。 对于UTF-8到UTF-16,仍然有std::codecvt<char16_t, char, std::mbstate_t>专业化。

但是,由于std::wstring_convertstd::wbuffer_convert与标准转换构面一起已被弃用,因此没有任何简单的方法可以使用这些构面转换字符串。

因此,正如Bolas已经回答的那样:自己实现(或者您可以像往常一样使用第三方库)或继续使用不推荐使用的API。

eerorika answered 2020-01-14T09:41:51Z
4 votes

新方法是...您自己编写。 或仅依赖不推荐使用的功能。 希望标准委员会在替换功能正常之前不会真正删除编解码器。

但是目前还没有。

Nicol Bolas answered 2020-01-14T09:42:49Z
translate from https://stackoverflow.com:/questions/42946335/deprecated-header-codecvt-replacement