嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
#include <iostream>
#include <iconv.h>
using namespace std;
#pragma comment(lib,"iconv.lib")
int main()
{
iconv_t conveter = iconv_open("gbk","UTF-8");
if(conveter== iconv_t(-1))
{
cout<<"encode convert not supported!"<<
endl;
if(errno==EINVAL)cout<<"einval"<<endl;
return -1;
}
else
{
cout<<"ok!"<<endl;
}
//待转换的字符串
size_t insize;
const char *input = "hello是";//汉字随便加//应是const char *而不是char *
//char *input_old = input; //记录待转换字符串的地址
//input_old is unused variable.
insize= strlen(input);
cout<<"input is: "<<input<<endl;
//存储转换结果的字符串
size_t outsize = insize * 3 1;
char *output = new char[outsize];
char *output_old = output;//记录转换后的字符串的地址
memset(output,0,outsize);
//转换
//size_t rc =
//iconv(conveter,(const char **)&
//input,&insize,&output_old,&outsize);
//参数要求char **不是const char **。可能存在版本问题。
size_t ret =
iconv(converter,(char**)&input,&insize,&output_old,&outsize);
//if(rc==-1){
//size_t 是unsigned类型
if(ret == (size_t)-1)
cout<<"converting failed"<<endl;
return -1;
}
//输出转换后的字符串
//cout<<"outputis: "<<output_old;
//output_old已经被改变了。应使用output来输出结果。
cout<<"output is : "<<coutput;
cout<<" outsize="<<outsize<<endl;
//delete[] input_old;//内存释放,不需要释放它,
//常量字符串
//delete[] output_old; //内存释放
//应释放的位置不是output_old,理由同上。
delete[] output;
iconv_close(conveter);
}