我目前正在使用iconv
转换具有不同编码的文档。
iconv()
函数具有以下原型:
size_t iconv (
iconv_t cd,
const char* * inbuf,
size_t * inbytesleft,
char* * outbuf,
size_t * outbytesleft
);
到目前为止,我只需转换char*
类型的缓冲区,但我也意识到我必须转换wchar_t*
类型的缓冲区。事实上,iconv
甚至为这样的缓冲区提供了专用的编码名称"wchar_t"
:此编码适应操作系统设置:即,在我的计算机上,它指的是Windows上的UCS-2和UTF -32在Linux上。
但问题在于:如果我有一个wchar_t*
的缓冲区,我可以reinterpret_cast
将其char*
缓存到iconv
的缓冲区中,但是然后我面部实现定义的行为:我无法确定所有编译器在演员表方面的行为是否相同。
我该怎么办?
答案 0 :(得分:3)
reinterpret_cast<char const*>
是安全的,不是实现定义的,至少在任何实际实现上都没有。
该语言明确允许将任何对象重新解释为字符数组,并且获取该字符数组的方式是使用reinterpret_cast
。