如何编写std::codecvt facet?我想写从UTF-16到UTF-8的代码,从UTF-16到系统的当前代码页(windows,so CP_ACP),以及系统的OEM代码页(windows,so CP_OEM)。
跨平台是首选,但Windows上的MSVC也很好。有没有任何关于如何正确使用这个类的教程或类似的东西?
发布于 2010-06-07 15:27:29
我已经写了一个基于iconv的。它可以在windows或任何POSIX OS上使用。(您显然需要使用iconv进行链接)。
“怎么做”这个问题的答案是遵循 the codecvt reference。两年前,我在互联网上找不到更好的说明。
重要注意事项
,则可能会失败
发布于 2010-06-07 13:31:45
这个std::codecvt的问题在于它是一个寻找问题的解决方案。或者更确切地说,它试图解决的问题是无法解决的,所以任何试图使用它作为解决方案的人都会非常失望。
如果您不知道您的输入或输出是哪种字符集,那么std::codecvt将永远不能帮助您。相反,如果您确实知道您正在使用哪些字符集,那么您可以通过一个函数调用在它们之间进行简单的转换。将函数调用包装在一堆复杂的模板中并不会改变这些基本原理。
...and这就是为什么没有人使用std::codecvt的原因。我建议你做别人都做的事,假装什么都没发生。
https://stackoverflow.com/questions/2971386
复制相似问题