gpt4 book ai didi

c++ - 在保持代码正确性的同时使用 iconv

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:21 25 4
gpt4 key购买 nike

我目前正在使用 iconv 来转换具有不同编码的文档。

iconv() 函数的原型(prototype)如下:

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 中,但随后我面临实现定义的行为:我无法确定所有编译器在转换方面的行为是否相同。

我应该在这里做什么?

最佳答案

reinterpret_cast<char const*>是安全的,并且没有实现定义,至少在任何实际实现中都没有。

该语言明确允许将任何对象重新解释为字符数组,并且获取该字符数组的方式是使用 reinterpret_cast .

关于c++ - 在保持代码正确性的同时使用 iconv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com