设为首页收藏本站官方微博

[报道]重新报个到,申请个新人成长礼包~

[复制链接]
查看: 2788|回复: 4
打印 上一主题 下一主题

[报道]重新报个到,申请个新人成长礼包~

跳转到指定楼层
楼主
发表于 2009-4-23 19:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

[报道]重新报个到,申请个新人成长礼包~

[报道]重新报个到,申请个新人成长礼包~
; x, b( V4 l3 \7 f
& M2 P7 o: G+ a! u灌个水吧...3 O6 }6 N1 G$ r  N
/*** {' E( p. z) X
*@file   
/ w7 j6 M) u8 Y; `6 G" e" v9 }1 s*@author Jimmy
6 l- B! D, @$ Y  e; q! H0 i*@date   2007.1.16, X* c% `' ]) N" r2 B8 ?
*/
1 [, {) c  V# f0 V& M#include "utf8conv.h"
! {- j3 u+ h2 K  S& ^: ]
  ~  [3 A: Q6 f" @! B- u
$ v! C; k2 D( }8 Q: U, x- A4 u' h5 P6 F" H: o9 T, L5 Q3 `! y# e
int UTF8Conv::codepage(const char* code_page)
. u2 x6 p3 @: I{   
6 [, x3 v6 a" P8 q3 ~#ifdef WIN32
4 D! m1 t. h6 c    if(code_page)  [8 l' Y, G' X: {' G* o" \
    {         
: w& [! ~% d7 ^! Q' U6 M' J3 S        return GetACP();//既竚箇砞
/ U3 n" v+ t  j7 U9 N* ]0 H    }      / t2 u9 D1 h) Q8 r
#endif( E& i! g: o. U
    return 950 ;//taiwan acp/ {) _* O% J7 o" h; N" K7 i7 H
}
6 x! R$ f6 S8 W9 R" r
# F8 Y$ G  K: q8 ?% o& a
! m1 c! o6 \" q( R- a* R" V2 bint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)# Z. e3 Y: w9 _3 O
{
/ S: s0 k( `8 C( k9 I#ifdef WIN32
# f  C" m: t9 P    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);; `+ g- n/ c! h" _" l' ~" i& q9 m
#else " y) B8 l5 `5 H, f  L
    size_t result;
2 z% l2 V* }# b+ s, M; N- c5 D    iconv_t env;+ n, F: p2 @$ }( ]6 @$ v, s2 r) w2 T
    env = iconv_open("WCHAR_T",code_page);5 s( b$ y7 T" m6 ~1 v6 ~
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);6 n5 `( h! d& q" l( S9 K
    iconv_close(env);" Y8 ~% ]+ q* x' u& c
    return (int) result;
  k/ v- m0 c6 Q" d3 H" R( |0 X
#endif   
* b$ H2 g0 y2 V4 T  e6 k/ ]+ m}
  d' q  R0 n2 l! Z* e" L; |3 u, F
0 m. w7 ]% I( A% Eint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
0 x  o% {, \3 B( R{( T) L( u) P0 k# w
    int len = in.length() + 1;
) L8 Q; @5 y4 r2 A0 T    int result;3 R* j  b3 K- H( e  E1 E! @- p
    wchar_t* pBuffer = new wchar_t[len];
! s3 H. a* F  q    memset(pBuffer,0,len*sizeof(wchar_t));
3 y. F3 l  C1 V( p2 @4 s! H8 k    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));  u3 G& X# F* ~4 A& c
    if(pBuffer >= 0)$ ?) m& Y5 z5 }, s7 }1 E9 v' {
    {" p6 ^! J  C9 B/ G* Z3 u6 \. P( d
        out = pBuffer;) ~/ ^% U# ^$ s  Y
    }
8 `* C( }( b  a3 F& C) c- O; q5 ~    else* R# D) F/ P  f3 X: v2 [, i8 b) b
    {6 Q6 S4 X8 M! b/ s
        out.clear();' k. ]8 m! u3 F. S& V5 [- `0 a
    }0 l& `/ i2 n" D& l+ Y; h
    delete[] pBuffer;
6 H5 U. J, ^  C: t- Q8 E- D  z    return result;
3 I5 s) x) A! v0 w0 e8 R}+ m+ s8 A6 q6 i$ K! k1 h
# B# m/ H/ o# k; ?0 Y8 w" C' L, h
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max); i& O/ ?( s9 F, G: {* X
{
; T' W' F0 n, n) S1 }- H#ifdef WIN32
0 t+ }& a$ {- s' {    BOOL use_def_char;
' V/ G% I8 H( _' l    use_def_char = FALSE;3 n1 n7 ?% r- }/ D( h
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
6 z/ z$ V- b0 {8 l#else
% f% Q) K% \& r$ \( z    size_t result;" s8 O, V9 p; {
    iconv_t env;
; }! C) B9 s" S0 Q1 d. G$ }6 f    env = iconv_open(code_page,"WCHAR_T");" C8 V6 Q* y$ K( m+ \% Y& V( H
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);* ^0 P% k" p/ ?! G$ V. ^" a
    iconv_close(env);
# C" q* m$ ]* z$ I) v5 J1 w    return (int) result;' D3 ^6 [. l8 J
#endif   
* d8 u; n* j7 N}* u& ]) P; o' s4 T1 G+ B7 t: y* {% {
6 b2 ~) {9 j- F4 F* e2 t
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
! c1 V$ u( C! X% m{: m) p% F9 K# ]$ D9 S/ T& u
    int len = in.length() + 1;4 M( J1 j4 {6 ~* \- l
    int result;
) M: g8 c% P& ]1 g8 G    char* pBuffer = new char[len*3];
7 i5 e5 E" Z* ~9 f4 c- S5 O) m) r8 g    memset(pBuffer,0,len*3);
! p* G. U( i3 z- r# v! l5 o    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);2 R$ ^4 n) e, F% L6 p
    if(result >= 0). J4 ]+ ]  Q# j+ x
    {  
: H# V  D, k2 _, ?7 E* @        out = pBuffer;- G5 Q# B/ X4 j+ f* R' d! M
    }
/ M- R3 ?" _- O' p) s/ T    else
3 i  [( l  `9 ~2 c" c/ ^6 O) w    {
3 O0 ^9 a$ P( R/ j0 y' }; X/ f4 b        out = "";7 \# t  f& H5 ?
    }" G& a; Y; p0 ?' a3 W+ g
    delete[] pBuffer;! X, K7 A5 p- b1 n: Y
    return result;
* \# b9 b, E' D9 C' v}7 w: G( Q' N7 m/ v( ^6 Y
4 J* W8 q6 z2 p
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
; G! C- ], S) E5 k( l- G0 ]. m{5 g: S+ i6 {, t: B. K1 Y- o
#ifdef WIN328 d4 M" y: B* Y

! [5 W8 `. Z: W% Y2 Q1 D. u    BOOL use_def_char;
( r5 i0 c# w( x5 s# H' p    use_def_char = FALSE;
' c% n: k4 {2 C1 _+ K8 W! K    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
0 \) m$ j9 S2 C, o#else
7 H' m: e$ z+ b" S3 q+ Z& D    size_t result;
( H8 [+ t6 A1 }/ }    iconv_t env;% L2 V7 Q7 T. r

: i. }- c, c6 |: J4 [# i) c1 e    env = iconv_open("UTF8","WCHAR_T");: m4 b" M; J# \' Z7 e
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
" P/ y; `" p8 v2 k8 U2 `" d6 A- Z    iconv_close(env);
! P3 i& o6 |' d/ r  u/ K    return (int) result;, d9 D) g6 l, j
#endif
$ c0 S8 i4 J8 I& l}
5 S+ ~5 z! P- y- ^7 N) u
- q: `: W9 ]' v% L9 r1 `int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)3 h/ Q2 I# @+ Y  D
{
2 Q4 j* K! U% `9 T    int len = in.length() + 1;1 Q# t- @! V) o' x5 R( S
    int result;$ O6 Y! K% e4 ]5 S+ Z
    char* pBuffer = new char[len*3];) l' ~0 ?. ^1 N$ \" {0 m) i* F1 P4 U
    memset(pBuffer,0,len*3);              
0 T, ?+ d% _: n& G& M; ~    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           / L# }* C# ?5 J+ Q# v
    if(result >= 0)
4 y* S( @" |0 h* }    {4 T) O2 }& b4 y6 f/ e2 |& D
        out = pBuffer;4 N6 f% {2 H  \; L! @2 d' C/ D
    }+ S+ `0 u+ k3 @8 L9 v
    else
  B2 A. t. H. _/ f" z& c    {
) y/ E1 E! u- d, x) I, ?        out = "";
  i7 X! F2 ~$ @4 d. R- T. o( W    }7 t# X( R' L# `- Z. [
    delete[] pBuffer;
1 D* O$ u5 f' m0 z2 \* @( c' H    return result;" N5 F$ N1 _% T: r/ ]  }0 C( f' K
}
! V, J1 M! T% d" H5 F, N( l
6 l1 i7 b5 Y0 q% z& C; E6 G$ \int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max), d" j1 L1 N9 [, r8 y2 d! b9 Q( E
{* p: r9 v; [, j: C2 _
#ifdef WIN323 q' E, @% f0 H0 ]" y
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);& x# b! }/ w1 X# `9 L  |
#else, i+ v8 z2 P: L- {6 D# p" O6 a
    size_t result;7 k7 H, C' r+ a; |. o) U1 _
    iconv_t env;
! z  w' n" ?- i3 F2 B    env = iconv_open("WCHAR_T","UTF8");
' b/ Q8 |7 @6 C; I. ~! u, I    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
+ Y+ j9 e+ I  v( ]; A# r6 r. R- ]( U    iconv_close(env);1 u' \+ R9 p, f) r; |! L7 t5 s
    return (int) result;, m& U6 C3 l! [. K1 n9 S( c
#endif
( u5 Z; k1 k5 @: X2 j6 s+ H8 U  f( U* V}# b. D- p# j+ o5 b
4 X% S, V7 O& C3 G
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)" _/ I" W7 r% e  O! o! ~; B# }5 o
{
5 N( x  _8 z2 B    int len = in.length() + 1;, R& ?! x" e3 F
    int result;- [" B& m" f* G1 @
    //wstring temp;8 J3 x6 v9 Y$ q+ ~. A' F
    wchar_t* pBuffer = new wchar_t[len];. D  K% j0 |* L1 ~' [) Q; c
    memset(pBuffer,0,len*sizeof(wchar_t));2 G% L" j7 H# N
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
. B. G/ [( A" [, J/ M7 g    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));0 w" ~+ \: D# L! ^, @8 u7 j
    if(result >= 0)/ J, m% y$ o; G
    {
' H& m9 Y2 T! H6 R+ C7 v' T4 C0 H- n        out = pBuffer;
5 `* H" s, ?4 K, |- Q  V- c! L5 [    }
2 H3 l) m9 ~1 P! d% U    else
! p" p! h% \$ f! W7 b( {    {$ L. ^0 k9 v3 o, J
        out.clear();      
/ `# A  U7 }5 I9 R% S    }
  K3 @* ?; i) B% e    delete[] pBuffer;
# _- c2 t* X9 k# c& E/ Q% h    return result;
1 k8 \2 {0 o$ F, P( f}
5 I* ]( t$ y3 Y: G3 a5 P
8 S- N6 H# N7 B' y2 ?, k% Q$ ~/**0 Q7 t3 l% c/ W8 \" |
*@file   : S2 r( d3 W! ]# W+ P. z1 E" q5 [
*@author Jimmy) J4 L  S2 @' u! W( D: g
*@date   2007.1.160 A" W! C. j" M# J1 U
*/
" c' @% g9 {% W- c#ifndef _UTF8CONV_H_
) |0 d3 N6 R' p3 W& \- z#define _UTF8CONV_H_
9 S: V" D2 ~9 J. M- H) a- v& ]1 V8 O/ N. E: v

% o9 d+ l+ M& a: O#ifdef WIN32" p( W: Y2 i9 ~3 C
#include <windows.h>+ r$ R+ ?$ c# y# ^6 m9 P, |" ]& W
#include <winnls.h>; t. g+ P" h: _) c' R
#else2 W9 I# P/ k9 B1 B! H. I2 v
#include <stdio.h>3 k* u+ Y, O6 l1 n* Y
#include <iconv.h>
) L- t: \8 X% Z3 f6 y4 x* j% B7 M+ j#endif! Z, @/ \, @# v" H

% N! V5 B& d3 i3 p2 V#include<string>/ @/ Y) n; c; D  ]$ ?. }1 T5 z* Y0 X

/ d" m5 C4 g, b: Z+ Z4 ^# o: L- F
7 B5 Z, F6 w) x8 s% ^* Tclass UTF8Conv3 N5 y9 F* M, p+ R
{5 H/ @: ^: G- v9 j$ b( F7 ^
public:2 X" B/ z( C7 i  r% o
    static  int codepage(const char* code_page);
2 _/ A7 y& f- j- m" z* ]) V+ I  `- `9 `6 P9 \) n
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;4 q$ v- y4 J! Q% x" _8 j4 }6 l0 X

! m, G6 j3 v: H1 l9 a9 _    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);: p: c2 ?) J7 ]2 ^4 U0 \& q" o

; l  \* E, b  m    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
& W7 B8 y0 b) b% T, F
+ V* Y9 n( r  w    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;! b# R+ ~; c8 B/ L0 e

" e3 M9 D( S9 b% E' Z$ o    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
" Q4 {, M2 U% G- {! W0 ]. ]& n# w, }5 J. S. s/ x9 N; R: M: p
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
0 l; d: I) N& j/ C$ H8 Z8 [% ^3 a4 t8 `# l, F  D
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
/ e. `0 e! ~$ N# P$ s1 V* u3 t: S' E
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);5 B+ M& T9 a' n0 V% v2 x& f
};! o) i; Y! E/ H$ q8 Q6 s

& W2 {% i$ u  H/ \
* x) e/ B. M* S5 \  [" g! V1 X% [+ L8 e

# M, d$ m0 }8 m8 v1 W7 t# `" `) _' \1 g
. @8 l. m; Z% p+ F  r
3 I) \7 t# e5 ]

& N$ U9 z7 d& a6 {8 F7 `/ }/ s7 c5 a: z5 N* s

0 \1 v- h0 }: z4 M6 P
2 u  r2 C1 ?1 f* Y8 E( {6 u! m
& |: i% a( T5 O# X8 Q7 ]1 j) L! n8 v0 w4 `  ]' C- C; ?3 s, f
7 v( p* K& F+ Q! i0 T, F& f* c
; q. M2 G  f% l7 l3 o) g2 s+ K( F, m
/ \7 p; s5 U, X, R3 M( c
! O! a2 f: y) ?0 V# m4 r# r

! |) S. A2 A/ h2 h9 p/ m: V* J7 P( n/ e

. l3 t" s# B* c% i" S; i
! \0 u! j& a" c: m. p- ^
( g3 j) d- K' z# u5 U
4 Q: i* M9 J6 e6 K" Y2 v/ q( F0 ~2 H0 q9 X6 f; V

9 D# d  g' |) M0 |7 c0 N: a0 C, C! P& X. y+ Q! A: {: [% n
" ^5 x$ S8 {5 m) A* |1 p

8 \/ @, u- ?/ Q8 h$ o% Q, N( h3 m- v/ g3 {, t- f" ~8 Z7 ?) L
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-4-23 21:08 | 只看该作者
这水快赶上黄河了····· [s:2]
回复 支持 反对

使用道具 举报

板凳
发表于 2009-4-23 21:11 | 只看该作者
但这点还不如我打飞机的成果多。
回复 支持 反对

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
6 X2 e& B7 d8 m; X- X& O  ]这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
. \; }( l/ f* r但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
1 ^) d; _" _% y; a& T
* F" }% u9 {$ M8 |and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表