gpt4 book ai didi

c++ - 如何编写 std::codecvt 方面?

转载 作者:IT老高 更新时间:2023-10-28 23:17:39 29 4
gpt4 key购买 nike

如何编写 std::codecvt 方面?我想写从 UTF-16 到 UTF-8 的代码,从 UTF-16 到系统当前代码页(windows,所以 CP_ACP),以及系统的 OEM 代码页(windows,所以 CP_OEM)。

首选跨平台,但 Windows 上的 MSVC 也可以。有没有关于如何正确使用这个类的任何类型的教程或任何类似的东西?

最佳答案

我写过一个基于 iconv 的。它可以在 Windows 或任何 POSIX OS 上使用。(您显然需要与 iconv 链接)。

Enjoy

“如何做”问题的答案是跟随 the codecvt reference .两年前,我在互联网上找不到更好的说明。

重要提示

  • 理论上不需要这样的工作。 codecvt_byname在任何标准支持平台上都应该足够了。但实际上有一些编译器不支持或严重支持这个类。不同编译器上codecvt_byname的接口(interface)也有差异。
  • 我的工作示例是使用 codecvt 的状态模板参数实现的。始终在那里使用标准 mbstate 类型,因为这是将 codecvt 与标准 iostream 类一起使用的唯一方法。
  • std::mbstate_t 类型不能在 64 位平台上作为指针跨平台使用。
  • 无状态转换适用于短字符串,但如果您尝试转换大于 streambuf 内部缓冲区大小的数据 block (UTF 本质上是有状态编码),则可能会失败

关于c++ - 如何编写 std::codecvt 方面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com