如何编写 std::codecvt 方面?我想写从 UTF-16 到 UTF-8 的,从 UTF-16 到系统当前代码页(windows,所以 CP_ACP),以及系统的 OEM 代码页(windows,所以 CP_OEM)。
跨平台是首选,但 Windows 上的 MSVC 也可以。有没有关于如何正确使用这个类的任何类型的教程或任何类似的东西?
我写了一个基于iconv。它可以在 Windows 或任何 POSIX OS 上使用。(您显然需要与 iconv 链接)。
“如何”问题的答案是遵循codecvt 参考。两年前,我无法在互联网上找到更好的说明。
重要告示
这个 std::codecvt 的问题是它是一个寻找问题的解决方案。或者更确切地说,它试图解决的问题是无法解决的,因此任何试图将其用作解决方案的人都会非常失望。
如果您不知道您的输入或输出是哪个字符集,那么 std::codecvt 将永远无法帮助您。相反,如果您确实知道您正在使用哪些字符集,那么您可以通过单个函数调用在它们之间进行简单的转换。将该函数调用包装在一堆复杂的模板中并不会改变这些基本原理。
...这就是为什么没有人使用 std::codecvt 的原因。我建议你做其他人都做的事,假装它从未发生过。