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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~9 P: C4 u7 @% q, i. z$ ]
. N7 t+ e3 Y# I0 r1 |
灌个水吧...
" h2 P. ~* Q& z9 o! }0 g/**
3 Y+ _8 r2 e+ z*@file   7 d' p4 g8 [* T% l% }
*@author Jimmy
% E: A! S5 W' {4 h) u, S*@date   2007.1.16
4 |9 T! [1 e, J3 Y# e*/4 w8 {# k; c  ?) b( y9 r% p; Y
#include "utf8conv.h"
  w& p; \9 f. {! A) r* y9 ?4 m9 S- f0 {

! i% y/ c2 ~6 I  x/ ~5 G* G2 Z3 T! k& S0 U$ B
int UTF8Conv::codepage(const char* code_page). {  {- j' {0 V5 n* c7 S
{    3 ^" I- x  Z0 o
#ifdef WIN32
0 |5 }2 m$ s7 U+ O3 y% C0 k+ L& j    if(code_page)
7 f3 \  i' j5 K$ Q. O    {         
' V3 _0 F1 V2 J9 p        return GetACP();//既竚箇砞
# C4 D3 q. P/ J2 b    }      # r) s! V% M) O" ~' v) x: r
#endif
" \: Z( a/ A5 g. D: u2 W    return 950 ;//taiwan acp
+ @4 d: Q, J& u6 T4 y% b+ Y4 P}
# M7 i5 k8 s1 W# u& M$ c5 B% C8 Z- s' b% ]$ A4 m6 U

) O3 h: K$ F5 Pint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
1 F$ |" j$ n. l" J8 W+ z* B{. [* F  f9 b: \* b% V% d
#ifdef WIN32
2 X! V4 c+ Q! E8 e+ O' A* M    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
7 _$ C2 L0 |4 u! P6 E8 @2 T#else
  G( `5 c; D* J; Z: W    size_t result;
% O9 q8 D3 Z5 a6 F9 t* w    iconv_t env;
. O4 @( F/ Q$ C1 B2 m4 K    env = iconv_open("WCHAR_T",code_page);, e2 m; |1 O7 H# Y
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
7 Z0 g# ^& i) R% {    iconv_close(env);7 h; r+ ~8 S: m0 S! O% K, N9 j; I
    return (int) result;2 p- l  h! ~; E

/ k& `" _9 q! J( J! x#endif   
4 U& }1 [/ b+ ~}/ q4 S9 d$ b; P

. z% I0 ?7 X5 `) F1 \: bint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out): \% U  ]: A9 f7 P5 `, c
{" f" T! d: A6 c& t6 X
    int len = in.length() + 1;: S: M8 a; c! R. ^( }
    int result;* }. g0 d0 x7 L" t3 H
    wchar_t* pBuffer = new wchar_t[len];
3 f. d# p8 N5 P3 n2 i    memset(pBuffer,0,len*sizeof(wchar_t));" c. U9 p' k+ H
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));7 T8 p! m9 ?* `! ^. M' V. X- A% z0 A
    if(pBuffer >= 0)$ d0 e  d) V2 |* s
    {# p9 D4 r! R. `$ |: {
        out = pBuffer;
, z. |" ~6 a3 o& i" ?+ O/ j7 j; O    }
) X: p3 h: W2 Q! @: f+ N( [    else
- K, ?8 t: E  ?! _9 [; j5 h# l    {; U5 {  J4 b( ?$ P9 Q% Z
        out.clear();
6 K1 t; n+ N7 ?( y    }
- [. t+ ?: W+ u; ~% f+ W! V    delete[] pBuffer;+ Y  Y6 g# N$ _2 s* t
    return result;
1 o) L0 F1 k% ]# C5 G( x}& H% k- R$ x$ a  g' ?* n8 W

, b7 J8 k5 ?7 v" c7 vint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)( @+ T0 d0 ~, B7 l+ p8 Y) n. H
{
0 ~" u) V/ o- C/ @9 r3 \#ifdef WIN32
: G0 j" x/ G$ B' ~5 o* D; J    BOOL use_def_char;
! z, R/ m/ x) b: R% L& F% x    use_def_char = FALSE;
& ~/ w% z" e7 ?  P    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
  s1 t* |* @9 b/ r( i; I#else5 V" B# }: t; u* ^
    size_t result;
! J7 h% g$ w/ W# G7 h    iconv_t env;* p+ G1 Y  {5 @9 x  t, P
    env = iconv_open(code_page,"WCHAR_T");6 d& `) J! j  M$ k3 j$ u
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);- i" |; k' x; S
    iconv_close(env);/ O  z  y" e8 F5 O* o+ A
    return (int) result;
9 D4 ~' x/ I+ e2 u; t5 G5 F1 N0 }( m7 Z$ Z#endif     f' T' P. C+ E9 Q9 {. r% M
}* d, W( i2 l0 C4 o, [
& G/ n9 d" ]7 g0 l. Z; i7 d
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
) d. `: N# o2 h. \{  f8 n: j5 o# j  q& \* B
    int len = in.length() + 1;
1 U' A' [7 U7 @# I2 B5 l1 n    int result;( W/ d" {2 X& t" n6 J1 M+ h/ J
    char* pBuffer = new char[len*3];
. l* P. y7 ~& v( [. L    memset(pBuffer,0,len*3);
! a. E0 q& _2 x6 S6 ^1 @' z    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);- {" T5 M1 o7 N2 o5 }( a- F
    if(result >= 0)2 o1 u* [: w$ ~- R! C4 N
    {  
( x# b2 Z+ j4 y; m  ]6 p        out = pBuffer;
2 y- B% p) ^* ^: y    }
6 V" c2 T: E8 u7 U' P: L6 \' e    else
% I) D( w1 M* ^9 E2 d. \6 q7 O7 X    {
* y* h( g$ l4 ?  O5 d5 R  ~5 u        out = "";
( u8 v. b& N; X3 O    }5 y  w3 g% r+ @, z! E! f
    delete[] pBuffer;
% R. h4 ~, ~* l+ W! V& w    return result;* K6 Q! C+ ]( {; \, r  i8 g
}
& G! m' m, j" \4 O4 v
  y" M3 |# t1 xint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max), u+ {/ j/ s( n5 v$ r3 F0 `
{* |  w* y5 K5 ?+ G) H, i
#ifdef WIN32
/ B  ^, i( o9 `5 _+ H, y$ w& H; G, y" B" p
    BOOL use_def_char;
, E6 H; _3 Z" L7 _    use_def_char = FALSE;3 Z1 y6 u- l1 }& |! n
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
9 v% a  D9 j" O! ?. a#else
: U; ?- M" k# M: |2 r7 R    size_t result;* [* _" l; [) f9 b; ]
    iconv_t env;
# u/ X; [' x. m9 H4 J/ |2 T+ M0 c7 w+ H- g- D) d- b7 A
    env = iconv_open("UTF8","WCHAR_T");. N/ M8 f( E* K# J0 [/ P+ A
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     - P+ a  b  L  j; F4 L' m
    iconv_close(env);( E  P7 M! _8 `4 m0 n  q
    return (int) result;3 Y' m: i. Y& o" Y) P
#endif7 _; z' m7 }+ O; {
}; w" j7 F. @, v6 r% a3 o7 c& |

' K: e( h/ ~9 h! W3 @7 cint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
+ `1 v8 X; H/ T. \" |/ y0 x& m9 l{
! R; U. _; O8 q; j$ j" H    int len = in.length() + 1;
# G5 w/ G; y) e' J/ S) g2 E& F4 ?    int result;
. I; A9 g8 x+ U    char* pBuffer = new char[len*3];( V) a& O0 [2 k/ F% g
    memset(pBuffer,0,len*3);              * e5 j/ L, Y- b+ b0 C
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
* V" Y; j  M2 }, c0 g) x% k2 S    if(result >= 0)
7 ~' f. _, X& o9 z- T    {; @9 r$ g' z% l( `, I
        out = pBuffer;
. y4 _+ m3 x' p! j& c, j    }
# y4 S$ Q% }5 ?  ^    else* G& D( _+ T) M$ q7 V, c
    {' o. X) p* S) z4 A( }/ b- K! V
        out = "";& y* ]1 q& y+ Q* d  w" X8 w
    }
" N; g2 [* C4 |! L# T# @: \& _& O    delete[] pBuffer;
6 a) P7 m. \  l    return result;
1 w- X& d1 Q2 X4 g: E}
9 ^4 K, q7 U% i2 L4 D% c: a! Y
& ^9 s" @9 {1 T! t& k1 y7 oint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
8 p& z7 B! a, Y" G{
0 ]) {- [- L( D' ^: N: d#ifdef WIN32
9 w% l8 _' H6 C0 r1 {    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);  P" q8 j/ f! a/ `+ c6 x5 K
#else
% ~$ \2 L6 x$ z0 T/ x# h- j    size_t result;% u2 L- l; r. g. W$ H9 t4 p
    iconv_t env;
9 E5 V5 A  T# Y1 M& ?/ @' ]    env = iconv_open("WCHAR_T","UTF8");) M% l( h  g' N* ^
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);: S. q" l  o! `/ x% D* B  f! \
    iconv_close(env);6 [2 Q! y) X- D) h# u+ R4 a3 V
    return (int) result;" s  i' {0 H7 R" d
#endif1 x; G8 q7 i. ^
}4 }# ~1 n8 @9 d
; L0 v* N% t/ _; C5 E# A5 b, f' ~
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)% x3 V2 w/ x! _- ?# C2 L; Q$ @: W. B
{
' i" y4 P, A; ~  U! d% e* l+ q    int len = in.length() + 1;4 W% x; ]! {' E8 x
    int result;
. F8 Z- i. X# ]- C, A    //wstring temp;
8 C* I/ l) C* T1 i* N1 D3 @    wchar_t* pBuffer = new wchar_t[len];8 ]/ |: e# y8 t* @) f9 n+ F
    memset(pBuffer,0,len*sizeof(wchar_t));
3 H, q9 f: i3 [7 t3 K2 r+ T9 P% t    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));0 p7 t( U! l% {- W" `
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));; B9 F- _$ q" h
    if(result >= 0)6 ]- G- {6 K3 y* `! t- Z) h4 ?
    {
1 G7 F+ M* x, L9 m        out = pBuffer;
& }7 C% b; H' a4 ?    }
8 G' L2 _* p$ H; \/ @    else5 W; g3 }- j$ I+ f, A7 O
    {
. T9 t# y6 m0 g# Q        out.clear();      % [1 S# P* D+ s, V6 H/ P
    }
& g9 U2 s, Y0 X- @    delete[] pBuffer;& J! S, S$ i) a2 ]$ a: y
    return result;- y8 E; R6 W# f8 P
}* G+ \' \- C  H

/ ^" j0 t( }) d& `1 I  _& N+ X/**8 t: i0 i5 A9 d9 C9 l
*@file   
; M- w% H9 Q' ~9 D' M( L! m* {*@author Jimmy
# T9 j" @$ _( ?! ?*@date   2007.1.168 q- j. t2 i+ Q
*/
' ^) x2 Z! E( Y  ~' f4 J+ Z6 k6 H8 n#ifndef _UTF8CONV_H_
& \# `) {: D# c& r; k#define _UTF8CONV_H_
2 J2 g; r3 j$ }$ n) Q) Q* g3 O# |  i, [
5 i6 f6 f9 j+ X3 k, |. J
#ifdef WIN32
/ b+ _4 `7 W- Z; U0 D9 e  z#include <windows.h>
% U- G/ C* C( t) z#include <winnls.h>
, Z) n" A2 M; D3 W2 T! _4 [- S#else! R. {3 m+ B% ~
#include <stdio.h>3 T/ E$ C8 l7 v
#include <iconv.h>0 Z1 W7 ]. y% x# d6 {5 M
#endif7 K% F# x/ `5 o( ~5 J

, m1 {9 X& S- S  d5 k9 T" F#include<string>
( Z! o; b( B( f+ s; K3 j
2 S4 R) D' w) a- [6 L) ~
, S5 m, T$ l2 R' Yclass UTF8Conv
7 N) L; a* z, S, i {! M" Z7 E' u3 w% }3 G  `
public:9 W( s2 c; {: z# O+ r' C6 d' c
    static  int codepage(const char* code_page);: ^8 u& J' c4 L$ ?" i

) }' p3 z/ k+ A+ @+ \  b* u    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;" A3 ]( g! ]! O" v2 j8 r( n( a) ]

; g3 M' {, T' v9 V6 Z# \( j* ~9 S    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);7 u8 C6 u& H) }" n. f2 ?# o2 `" y
+ V- a; _! C. c/ x) }& X2 Q
    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;2 K/ \) I; t6 k( m
* A1 H  x0 _" h6 F/ |% C% }
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;7 J3 v. g) i) Y' i$ P
/ ^4 d: b- S" U$ U" ]. w$ o
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);1 _8 L' t! |  I
* ^' O' c$ r- p* p* u( z
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);  w: I- ?: Y' E% E$ t

. F: ?0 J9 G& y    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);4 }5 x. |/ q1 `. p7 r
  @( j& ?! {. \1 v: `1 Q
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);# t7 V$ H" O) k4 ]
};
1 _! I+ Y% C9 }" o% K+ M2 F9 W$ T6 O5 w! t  B2 I
9 U/ S; _. H. t/ U5 w9 X
5 E' A1 @8 s( M2 G
* x# {$ l# q% h3 S; L7 M

5 W" [8 Q3 N2 t
, G; i, V# D' _& g& ]5 R8 J8 E, r3 q% ^8 Q
3 t/ ?( @  z7 x

7 t& X" H+ X) L
. ]4 d5 }  N3 i+ w  n4 Y6 J6 _- r$ s: a

2 u8 P+ i; N6 B4 x" i* W2 H- e( p- N& M8 b; N, K6 g- n  ~

. G4 J- @& h5 m5 ~0 F0 L; a6 e4 G+ N. K
+ H6 i9 q$ @0 f" P
2 A& z4 l5 b$ q$ G% f
+ ^7 R7 }3 X6 |& _

' u0 Q1 A" ^+ c
  U1 W% {& T" A- o1 s  p& r1 Y) Y* v+ ~; X9 F! s# P! C

0 j! C- \! |( A  G( V
, Q/ r9 G4 P1 ?6 W6 G
5 D6 O4 m9 ^# H. e' U! S5 l* z; z, ~; r+ {1 h5 u
! h9 k  [% t8 F% Z# T+ K
; {! p3 d& ^+ M" U% W
" J6 ?4 s, M, c: O# v# |8 l
" ?" w" y* g2 T* P& G* ^
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
8 i, U$ d: d( `7 {这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
, G& ~' Q& H  S2 n( V% J1 d/ l但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
0 z# Y  Z0 I, B9 n2 _! {# t% T7 }& Z6 Y
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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