函数原型:
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
官方文档地址:http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.15/iconv.3.html
参数解析:
inbuf传入需要转换的字符串指针首地址,转码后指向未转码的字符首地址。
inbytesleft传入需要转换的字符串的大小,传出剩余未转换的大小。
outbuf传入一个输出缓冲区,转码后指向缓冲区末尾。
outbytesleft传入输出缓冲区大小,传出缓冲区剩余大小。
代码:
由于函数调用后,所有参数值都会变化,因此,最好保存初始的参数。
下面这段核心代码,无需担心输出缓冲区大小不足的情况。
char *inbuf_start = inbuf;
char *outbuf_start = outbuf;
//size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)