1. 程式人生 > >c++中的轉碼函式

c++中的轉碼函式

iconv_open函式

iconv_open——申請一個字符集轉換的描述符

#include <iconv.h>

iconv_t iconv_open(const char* tocode,const char* fromcode)

描述:

iconv_open()函式申請一個轉換描述符,轉換字元序列從編碼fromcode到編碼tocode

轉換描述符包含轉換狀態,呼叫iconv_open建立以後,轉換狀態處於初始狀態,呼叫iconv函式以後改變轉換描述符的轉換狀態,(意味著轉換描述符不能在多執行緒中同時使用)

返回值:

iconv_open函式返回一個新申請的轉換描述符,出錯時,返回(

iconv_t)-1;

int code_utf8_gbk(char *inbuf,size_t inlen,char *outbuf,size_t outlen)  
{  
        iconv_t cd;  
        int rc;  
        char **pin = &inbuf;  
        char **pout = &outbuf;  
  
        cd = iconv_open("GBK","UTF8");              //第一步先確定編碼格式,返回轉換描述符
        if (cd==0)  
             return -1;  
        memset(outbuf,0,outlen);  
        if (iconv(cd,pin,&inlen,pout,&outlen) == -1)  //第二部把想要轉化的字串pin和想要輸出的字串pout放到剛剛申請的轉換描述符中中進行轉換
             return -1;  
        iconv_close(cd);                             //關閉描述符
        return 0;  
}

<span style="font-family:Times New Roman;">int main()
{
               char buf[256]="你好";
               char buff[256]="";

               code_utf8_gbk(buf,1024,buff,1024);    //呼叫函式
}
</span>

 
如果遇到了一些問題,可以自行進行(char *)轉換。

不管什麼編碼格式,只要把編碼格式和想要的格式填入函式就可以了