2

我目前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但随后我将面临实现定义的行为:我不能确定所有编译器在强制转换方面的行为是否相同。

我应该在这里做什么?

4

1 回答 1

3

reinterpret_cast<char const*> is safe and not implementation defined, at least not on any real implementations.

The language explicitly allows any object to be reinterpreted as an array of characters and the way you get that array of characters is using reinterpret_cast.

于 2011-09-03T15:44:28.557 回答