我目前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 和 Linux 上的 UTF-32。
但问题就在这里:如果我有一个缓冲区,wchar_t*
我可以reinterpret_cast
将它用于一个缓冲区char*
,iconv
但随后我将面临实现定义的行为:我不能确定所有编译器在强制转换方面的行为是否相同。
我应该在这里做什么?