1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
//要转换至的编码应与编译器使用的默认编码不同,相同的话将转换失败 //比如VC6.0中文默认使用<a
target="_blank" href="/subview/25412/25412.htm" data-lemmaid="481798">UTF-8</a>进行编码,iconv_open("gbk","UTF-8");将失败 #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!" <<<a
target= "_blank" href= "/subview/3892069/3892069.htm" data-lemmaid= "6256824" >endl</a>; if (<a
target= "_blank" href= "/subview/3485007/3485007.htm" data-lemmaid= "11040395" > errno </a>==EINVAL)cout<< "einval" <<endl; return -1; } else { cout<< "ok!" <<<a
target= "_blank" href= "/subview/3892069/3892069.htm" data-lemmaid= "6256824" >endl</a>; } //待转换的字符串 size_t insize; const char *input = "hello是" ; //汉字随便加//应是const char *而不是char * //char *input_old = <a
target="_blank" href="/subview/549540/20270399.htm" data-lemmaid="9795343">input</a>; //记录待转换字符串的地址 //input_old is unused variable. insize=<a
target= "_blank" href= "/subview/736226/5092487.htm" data-lemmaid= "3103907" > strlen </a>(input); cout<< "input is: " <<input<<<a
target= "_blank" href= "/subview/3892069/3892069.htm" data-lemmaid= "6256824" >endl</a>; //存储转换结果的字符串 size_t outsize = insize * 3+1; char *output = new char [outsize]; char *output_old = output; //记录转换后的字符串的地址 <a
target= "_blank" href= "/subview/982208/982208.htm" data-lemmaid= "4747579" > memset </a>(output,0,outsize); //转换 //size_t rc = <a
target="_blank" href="/subview/1437030/1437030.htm" data-lemmaid="524310">iconv</a>(conveter,(const char **)&<a target="_blank" href="/subview/549540/20270399.htm" data-lemmaid="9795343">input</a>,&insize,&output_old,&outsize); //参数要求char **不是const char **。可能存在版本问题。 size_t ret = <a
target= "_blank" href= "/subview/1437030/1437030.htm" data-lemmaid= "524310" >iconv</a>(converter,( char **)&input,&insize,&output_old,&outsize); //if(rc==-1){ //size_t 是<a
target="_blank" href="/subview/2067328/2067328.htm" data-lemmaid="8604216">unsigned</a>类型 if (ret==(<a
target= "_blank" href= "/subview/3236587/3236587.htm" data-lemmaid= "8101179" > size_t </a>)-1) cout<< "converting failed" <<<a
target= "_blank" href= "/subview/3892069/3892069.htm" data-lemmaid= "6256824" >endl</a>; return -1; } //输出转换后的字符串 //cout<<"outputis: "<<output_old; //output_old已经被改变了。应使用output来输出结果。 cout<< "output is : " <<coutput; cout<< " outsize=" <<outsize<<<a
target= "_blank" href= "/subview/3892069/3892069.htm" data-lemmaid= "6256824" >endl</a>; //delete[] input_old;//<a
target="_blank" href="/subview/2537857/2537857.htm" data-lemmaid="6710865">内存释放</a>,不需要释放它,<a target="_blank" href="/subview/346799/6926102.htm" data-lemmaid="9513687">常量</a>字符串 //delete[] output_old; //内存释放 //应释放的位置不是output_old,理由同上。 delete [] output; iconv_close(conveter); } |
libicon的简单应用
最新推荐文章于 2024-04-12 13:47:13 发布
