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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~4 x+ C6 ]: [+ ]
/ q3 Y( q* w) U+ X3 T2 Q5 Q0 W
灌个水吧...
1 H4 S( Z4 M+ |  w. s% P) @; n) ]4 u/**" S9 k  p$ q* J1 S- {
*@file   
! P" W! C- y, Q' S, k. ^*@author Jimmy0 X" h9 W, ]0 q) ?- Z3 ^
*@date   2007.1.16
9 I1 A& W/ Z( ~) k  |) ?4 W; @+ ^*/
" q& y/ u3 L9 C; O( p+ x* f  g#include "utf8conv.h"
( G! W5 r' o# V; N3 X
5 h  u# n3 |( c, N. a6 V6 a% C4 O( I: X# A; ]

& f4 }3 ~1 b* c* ], U& Qint UTF8Conv::codepage(const char* code_page), r! L" Y4 {( Q
{    % r* P: s- G- ^! ^$ ^$ g( L
#ifdef WIN32- L  `; J$ _) z" u0 P8 c6 u2 {
    if(code_page)6 |$ |! `& E  H& J, b
    {         # o; A; s: m! e9 s
        return GetACP();//既竚箇砞" i7 n: M$ ]/ {( ~7 U2 g4 u5 V
    }      
6 Z8 \) D7 k2 d' [5 N#endif' U. |' Z0 M7 A, b8 {  }3 n5 D
    return 950 ;//taiwan acp
/ L+ |- C" z; ~1 L$ z}, l; ~" G$ ^, V6 P5 R$ \; N
% I5 s: `5 o+ ^0 r5 J$ J, g- l

! ^5 M: T- P( V4 e  ~& Hint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)) A# G/ y& n3 F1 Y# t- c9 \% d8 `! k
{
  c9 M* q2 ]$ |, R6 g2 u' Q#ifdef WIN32! F3 V3 N$ a& m; H# }
    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);+ {5 V& P/ X" O( F; ~
#else 0 j: h6 v/ C: I  \) O
    size_t result;9 R, t. O! K, ^' b3 g8 z
    iconv_t env;
$ D6 \  f7 ^8 q4 f( k    env = iconv_open("WCHAR_T",code_page);
4 z% n3 @) m3 {  Y- r5 U% \    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);4 S2 l+ f  L8 v) L+ n% F
    iconv_close(env);) ]1 J8 P. Z' e- d0 E  M8 i: @. {; E/ u
    return (int) result;  y& J) Z) w. c
0 ?7 V! p' L% f$ I% {' z+ |' n
#endif   
/ E  @' g( ^5 B8 w}
* A  h% K4 K% X5 v8 ]! Z+ k9 n5 ]7 w) k( Q9 a6 C# @
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
: X7 ~/ [' l8 c5 ^% q6 U{  m; h5 _. o: K0 a9 _
    int len = in.length() + 1;
: o) R9 n* ]' P3 z    int result;
. @4 j: o7 A1 r7 p2 B) p, W; }    wchar_t* pBuffer = new wchar_t[len];0 U* v2 a9 e0 J1 j; F
    memset(pBuffer,0,len*sizeof(wchar_t));
" S) h/ h! U% f# a1 z; U# [9 [    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));! j) N/ d, P6 \8 U
    if(pBuffer >= 0)- Q( c  ]! Z' ?( o, m: E, b( \
    {7 D/ Z  U+ _0 z# b
        out = pBuffer;1 Q( U8 U) ?! W+ z; R3 B- h
    }
! C1 }# [- J: m7 w    else' F  E- C, k# t$ Q0 t% q
    {
: H" @+ B  J9 U  w2 O, W        out.clear();" M. O5 n( W$ n( o5 q1 K
    }; l* [: ~9 ?+ W' v2 m* V7 {* B. t# |
    delete[] pBuffer;0 @- ~3 r( C- K/ ^8 s  p1 O8 Q
    return result;
" f$ C& u9 R& K4 r}
; r3 o# i! }6 J( V# a7 }) [4 u3 {  A) c8 k: G: z
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)) K- ~2 O4 x+ S+ n. ]  ~2 k6 b  K
{, n# M4 v( k% B# f: ?$ ^+ i
#ifdef WIN324 Z  m' q9 M0 q7 R5 \" j
    BOOL use_def_char;
6 j- f% _4 g( k' t0 K9 W5 c    use_def_char = FALSE;7 J' U$ z1 G& D
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
. C8 W! }6 G& [% r* ?#else
% r) i0 p5 |8 i2 J$ R+ k    size_t result;: H+ }; f' Z! g4 v3 n1 z6 n
    iconv_t env;5 o8 o* d' w) P3 k
    env = iconv_open(code_page,"WCHAR_T");) J$ U6 C( u+ }" c$ i
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);- G6 D5 m2 A2 V3 J7 I+ I, O5 ?6 @
    iconv_close(env);$ ^3 B* T. w3 \! Z. H' v
    return (int) result;
( U* H7 j/ M, r# g$ _$ C#endif   
7 M8 h/ h7 b/ m7 U# j# F# b}
9 @- x" P. V( C0 o& v$ s) G
1 \% B" ?3 @, t* ]( V& x8 pint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
* D' N' E* A' d{+ u0 j3 @) G2 U4 w( w
    int len = in.length() + 1;% b: {# ]2 s8 d6 g( u& E7 z7 S
    int result;
9 Z. ?4 v: u- U    char* pBuffer = new char[len*3];2 C# L( l0 U( }) P; r
    memset(pBuffer,0,len*3);8 ?+ G; z/ A$ I
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);0 ^( d4 b& j: w1 y+ w
    if(result >= 0)! D: w" j( Q) F
    {  ) g2 q: w: n# `( K" F! G
        out = pBuffer;) \& P2 x$ T1 S% J
    }: r$ Q0 U# d( i' `$ A% |
    else
, I+ ?* e2 x9 y: p$ m' h, i    {
9 h& ]" m0 k% b+ i. j& F6 E- {3 [        out = "";
/ j' y9 N; U9 j0 b7 m* Q    }  O% \/ p( z) v. L1 w: }
    delete[] pBuffer;. u: A0 n# t# Y. F, I0 F/ @0 K1 @
    return result;
' B0 N( i7 ^; h8 a& U}1 y# ]5 X0 G) H% S4 [; V" Q
# `6 X5 W6 H- D" ]- ]
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)' _9 O/ G+ z6 C: d; Q& j
{
4 c* a! a/ S* u+ K#ifdef WIN32
1 W( K+ M2 e- T) y- r2 I. y
/ Y) `0 y/ H' ]  }- T! G7 D. A    BOOL use_def_char;+ T  H+ v8 s2 c1 V, e
    use_def_char = FALSE;" ]6 j, ^, U+ Y, P8 ?3 B! I
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);) U2 w: |$ i* i& T( q5 F+ p
#else  g: ~( i) ~* w$ e$ o+ u
    size_t result;
. K- f# f2 G# [% r' R3 ^0 u/ [9 c    iconv_t env;( B! W5 U4 {/ R) {2 X; A% S$ R
3 }: `# ^8 v0 w# t1 L7 C
    env = iconv_open("UTF8","WCHAR_T");
5 l2 N" Z4 ^7 c# a% B4 T8 E6 `    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
6 T) F- a: _( J, }; i5 N    iconv_close(env);
, C: _4 W4 ~' P3 O+ C    return (int) result;' ~, `7 l! G+ [% W% d6 C5 ]
#endif
7 T" j" t4 Y' g% Q- S  k8 k: J}0 B) v; T6 E0 D, u

( C. C: ~% M" K9 Xint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)# M% i( N/ e3 P# F/ Y2 E0 R; J2 ]
{  t. D2 S! o% z$ N. v6 s
    int len = in.length() + 1;4 }1 E# z: ?  |! G8 e
    int result;
3 Q  z5 Q4 H' I. V! _$ a; @    char* pBuffer = new char[len*3];
- G/ W9 E% f2 z( H' r    memset(pBuffer,0,len*3);              4 H! E9 ^4 }* h9 T
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
. L  `8 W  {! N    if(result >= 0)
8 S! _. X; L6 C    {8 b2 u4 w$ |6 e9 @
        out = pBuffer;. c" Z6 ]' B7 X3 N6 @
    }
6 ^3 [: _0 e! V- m, a    else
, ~+ W  }8 L$ j/ S* e6 q; M    {2 c; y7 G$ I" h1 \; j
        out = "";
5 A5 j) ~9 T" d* p) M8 l. i3 {    }
) A: U6 J2 q9 Y% C    delete[] pBuffer;
9 |; [. h* q% ^9 ?9 ^    return result;
8 w8 ^, F# Q- a6 U& }}
6 a4 e; m( X. R) x
7 ?& y; x! t/ E9 P/ {int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
9 c4 o1 U+ s. E6 r$ T0 s{5 @, U$ `3 y: V; t4 ^7 \4 Z* o
#ifdef WIN32
# C' _! f* ^/ M: I; i    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
8 f4 s  J6 j; ]$ c#else* S  p. q; A# {5 r+ N  g  j
    size_t result;
6 S- B, J  U& U    iconv_t env;8 j3 c/ u8 o+ B+ u6 Y8 J' Q
    env = iconv_open("WCHAR_T","UTF8");1 e: s8 ^  s( H3 e5 U$ B( D* c
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
. D  U& |9 V) S: p, y    iconv_close(env);
4 l" z% l2 C: E2 G! G    return (int) result;% V" G' b( @6 P9 j/ H
#endif, P; E( y; l+ h
}( V) \0 a( Q+ c8 H5 ~

- l6 H# s, z+ \( h. l8 Pint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
5 w+ k) |( j' G) \; Y{- D6 x0 A: E% h; E9 m
    int len = in.length() + 1;
! b( v% P! a: s% N    int result;
+ D' F# M; o6 S: e  e  x( F+ ]    //wstring temp;3 ^* G) X* }) F: G
    wchar_t* pBuffer = new wchar_t[len];+ O2 o3 p6 N' e4 ]- T1 z8 B, f
    memset(pBuffer,0,len*sizeof(wchar_t));
+ M( i8 X& _: u! z% }" {- U+ s( x    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
! t! Q7 e/ I7 \) k5 R4 u2 @    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
8 C, X5 Z6 Y; p& m$ T0 j* [% f: R) K    if(result >= 0)
. Q+ O7 `8 |! d) X0 l( Y    {
5 j# F3 x4 M  K# d0 ]/ F+ j        out = pBuffer;
, }3 s  g1 w  ~& G9 N    }
9 M# f, M7 u3 r9 j3 y    else
8 K$ M+ m% D* k- o8 V    {/ a$ `/ b" k; L
        out.clear();      
% E7 |! h/ o. H    }2 u. \! V- e+ r1 w: d3 K# `" Z
    delete[] pBuffer;* Y1 h" v, c8 c
    return result;
- c4 }4 B  |+ u( j# c' N}
- ^6 f# K+ V% h0 j! p9 r$ `' |  H9 [
/**
! P$ y$ d+ t6 r  I! c  E8 M*@file   
' f) }2 n+ ~4 D, K( @8 y. y*@author Jimmy9 z) ?5 g3 e" d- [+ l
*@date   2007.1.16
: C; s% x8 L8 A) P6 o7 @6 G( _*/
) t1 c9 ]! P* T' {#ifndef _UTF8CONV_H_7 E( D8 v' r/ w* `( k
#define _UTF8CONV_H_
  c3 ?  m7 o7 s; f/ U) V& P* {5 L$ K; `5 k6 e

5 B& d+ |; A9 }. T: ~#ifdef WIN32
* R0 {) x  h6 b. ?- Y#include <windows.h>: Y  h. x1 ]5 V! S
#include <winnls.h>
4 f9 S$ M' |; b/ s* w4 i( [#else
$ v  F2 K5 L# \, D, F& K2 p5 v#include <stdio.h>% y' x9 t: Y0 g  r" Z6 T
#include <iconv.h>& ^* C3 C' v4 S! X/ f3 f- T
#endif7 F5 k3 n0 ?* }4 G/ z% ~  h
" A& ~" R- |3 |3 k2 I
#include<string>
) D3 s2 v1 y# d  T( |8 [: P. K
" C2 F: h+ {7 F# x7 d/ v/ |4 ]2 V! |8 ]- g& W3 j5 V% B( l8 q
class UTF8Conv
( A5 W# \- H9 x9 k9 Z/ T {. ~8 ~% Y/ `  ~( l; U/ ?0 v0 x7 Z
public:8 J/ _" _  G0 _# p4 V9 K' N
    static  int codepage(const char* code_page);
# o) L6 E. {+ C0 b. X/ t
. n+ k; o7 O" H    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;8 ?' c6 ^/ F7 O  X; c
7 y. e, {& K$ V( q$ C+ y+ M
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);$ K2 C! [5 b4 @+ w
( L, w, V0 r& G0 \0 N/ ?
    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;: D/ k0 L. O- a* W9 z- {

# D2 }5 t' L1 \) y' U; f    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
& m* ?+ K+ _8 u, H7 O: O2 |1 u; t# n: F4 L! f
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);4 T: }. P0 y, X/ v2 h7 R3 n/ ^: {- L! G' ]
  g9 E4 ^: F- \$ S0 G3 j$ l* E
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);3 S, R* `- h+ i, l- T' D$ p: N. ?
/ g, z  X) U" H- n0 d  v; Z
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
8 a2 n- Z& E0 R* |4 J! f8 N& E; G: C: L* s+ r
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
- q/ H) K" q0 ]! W  y1 f* @( p2 h" a};
. v# X9 l. ^4 J* c2 O+ m1 ?& W% z, D% t/ z

- f8 J7 o7 g8 v6 Q
+ R* F9 J0 X; t% I
. F+ {; S+ r! V# e
  P" s' Z4 R3 M+ a4 p
3 L6 E3 o1 Y- O+ y
8 a$ X- B9 @& r3 U; N6 w  u# g( ?! J
" s* |6 g2 F( R- P6 v/ R" G( A6 x4 T$ N5 |* p) q
% X) i+ Y" i. k0 c
+ @: d' W' Q# ^9 P  N' k) v; U

: g6 h; H( {6 W5 s0 `) ?
/ e" Y! r1 F& X; m
! e8 c( g1 P. D- U! m! |: o% w5 R# t7 i
- g6 I5 O6 l3 @, m0 m1 p& X
  E# C! j. f) ]8 }/ \+ ], v; m

: U/ T- {* A  b+ `; C5 s! q% Q$ b% l2 C  Q# m

9 _- Y1 f% v/ D1 i6 f& V0 o/ U1 Y. p! c! C4 r* |4 c

; T  v0 S7 O) J+ E$ i1 q
- m! H* F+ u, d8 n0 P
  Y8 Q# r8 e: X( g1 b: f1 F) A2 M1 j2 B
# L" k3 `/ G- _+ u! R1 H7 B; z0 }

# b0 I6 `; E: W, F' T1 ^2 u
9 u0 D5 B& E% j) K) L4 u2 _7 s
/ z+ S* b. g' a1 e7 ~: x& |! M3 a: V#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :- V4 @; L) P' Y. p6 V/ e
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
$ ?* _% K" n3 L" O$ Y$ ^) _' V+ b4 h
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
. a; j" a" s" c; X1 _' o这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

高级模式
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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