冒险解谜游戏中文网 ChinaAVG

标题: [报道]重新报个到,申请个新人成长礼包~ [打印本页]

作者: firendless    时间: 2009-4-23 19:44
标题: [报道]重新报个到,申请个新人成长礼包~
[报道]重新报个到,申请个新人成长礼包~2 v+ V* I# f" T; s2 f1 U& x" u; y: u
; H' N$ G9 L" {9 F
灌个水吧...
$ G4 ?$ z4 H7 l1 a/**
' q# J1 d* C: ^8 c1 p6 c*@file   . f+ v1 Z% }, h+ @( S2 x
*@author Jimmy
# ^2 e" ~" h- K& v: Z*@date   2007.1.169 K; R6 @9 v# T% v$ k* j& y0 j
*/
. b: d3 g+ K0 Q  t$ N8 O( p#include "utf8conv.h"# A% J6 Q% S+ ?1 v& b, f; ~
5 c9 ?3 p9 s/ x" n5 U4 e* A" w, `
. i. ~; j! E. D% m+ m1 d8 S

$ O- T4 D" \" C2 }int UTF8Conv::codepage(const char* code_page)  o. _! }, v4 G! M/ l! D
{   
! J' k4 x. z" M. N2 V/ ]#ifdef WIN32! z) Y/ S6 M1 b; M
    if(code_page)
( @% K4 W8 @/ s) V) ~    {         
! {0 P& x/ a9 g, A  _; c- a! a) b        return GetACP();//既竚箇砞) [& w5 K% Z' n, o4 Z
    }      
2 h( f# S. f' z; F# [5 l2 m#endif3 l( ]2 i. a* L1 N( Q# j
    return 950 ;//taiwan acp: B: j: l, [1 H
}
. E* A( }3 \, s! t( H  S
" e% n9 K" R# A! {. t% P$ V
; ~. w2 L% c8 V" c. xint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
% m. x4 U9 \7 \{! A: ~+ X8 F+ u1 `4 ]
#ifdef WIN32
* d/ r, t5 G# b/ f' ?: u+ U% m9 S    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
. X2 m8 e! s! R5 i" R#else
7 a4 m1 W$ w7 b9 J6 C3 J  X1 @$ ~, d    size_t result;0 Y* ]( E8 U0 B, Z
    iconv_t env;! s, m% T  a+ S4 }& I) A* M
    env = iconv_open("WCHAR_T",code_page);5 I4 z3 T/ N# m' k6 \
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
9 h9 L2 ?  E9 {1 J8 A" U/ n7 k    iconv_close(env);5 e% c+ s/ f5 h+ _! [( K
    return (int) result;
8 i# j8 o" S1 o. O% I  U' p+ b& p% p2 S+ k' B# x0 H& k. j) P
#endif   
# M" W4 t' _% x( z1 V}
7 A7 q0 l1 R) [7 f0 |. f5 @9 D# E4 y+ a" a9 Y6 j1 Q9 Z0 r
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
2 {7 ]* y/ c. H6 J3 J{. b) H% D5 x2 [% k% x4 u
    int len = in.length() + 1;
& l! I1 @; N, _% t    int result;
: E. u. y  m$ p- e1 g0 d+ ^    wchar_t* pBuffer = new wchar_t[len];/ ?- I& r$ `7 _& ]
    memset(pBuffer,0,len*sizeof(wchar_t));$ u, Y, P! Z$ ?9 P
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
# k' A* G, Y3 W5 O  o    if(pBuffer >= 0)2 y1 q) j( J# s+ R; Z  W
    {
" G1 }  Y* t3 ~& R$ k$ a        out = pBuffer;. e: M0 A( a0 k: p1 x# [. Q* h# N
    }" L- t' A$ C0 l1 ?% P- Q) \/ P( `- T
    else
3 ?5 E. g/ C9 y, L1 g$ q6 y    {
! f. R6 F3 U7 s% R; H        out.clear();8 P& d7 x( W" r- \; x3 h. T6 j
    }5 N; }$ L0 R# V9 L# T6 e
    delete[] pBuffer;6 E5 R8 G! e5 h; M0 t, L2 k7 e
    return result;9 |. M5 Y. J! ^6 L; T
}7 P  _- ?7 S3 [1 e4 |1 O6 Q" w

: y. T; a5 N' b$ S# P$ [int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
- P4 s2 [6 D  {) z& `% Q0 Y  o{
& N0 D+ s. o0 T8 N& [4 |, m#ifdef WIN323 p( S( n1 ~6 z( |: a
    BOOL use_def_char;
6 @+ a  g3 e7 O3 O: o1 @    use_def_char = FALSE;  x" \% A7 N1 b8 N8 Y
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);1 [# B% E  d3 \4 v
#else
$ V: x7 A- A& {1 \1 c9 t    size_t result;
  m* c* G3 ^1 o  r    iconv_t env;
2 w. }+ ?& g4 }* F# D" Z    env = iconv_open(code_page,"WCHAR_T");
$ l( n- I0 [1 _    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
2 }" ]% L* C; o$ P1 D    iconv_close(env);' r; }8 F! @) U! r  c- T
    return (int) result;
& Y& T% A- _" P, p* K5 F#endif   0 L2 e6 W  N3 a/ `6 e6 Y) Y. G
}
5 L  c% I- b8 y2 @" q
" w& H4 T; J' {int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
# m+ X+ W- y8 k) h{0 d. b9 e  O5 @3 U- S2 y
    int len = in.length() + 1;
9 m) |( K; r/ N  E: A    int result;: A, p+ u- y! A
    char* pBuffer = new char[len*3];7 s4 T) Y5 T0 L
    memset(pBuffer,0,len*3);
3 @$ p2 \2 t% P8 M9 j  R- a0 r    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
7 l5 o5 U7 i7 }% e% F    if(result >= 0)
8 a; ]4 H  |! g0 H5 m    {  
& o- l7 m  W0 W3 n9 g6 X        out = pBuffer;
( v0 E3 ?/ j5 o. k; o& p+ A9 C6 \* n( L, k    }: V0 Y; `' X& b; r# r
    else) J0 m& [6 ?& D, X) v
    {+ r- e/ U- ^' `+ O4 W( \
        out = "";4 L2 S/ f5 ?6 G; x( P' S3 c
    }+ u) s3 `6 \0 A
    delete[] pBuffer;3 I- F2 H6 f( R! @- f
    return result;1 Q+ f% K. G$ n; x9 U
}
. c2 H' r4 W/ ^5 C
2 o; f6 T2 ]: n& _1 r; mint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
# C) V& a# D; U. a  O# j2 b{, p: x3 T' x! U# |0 S9 R* D
#ifdef WIN329 w/ i: T2 a$ k- \6 H1 v9 t- {$ Y4 C
# {1 g# u: {# j9 F- U
    BOOL use_def_char;
+ |: ~3 P) C& ]2 t+ T! o8 b1 s    use_def_char = FALSE;
% r) C7 U& u6 z( [6 V* A# f    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
5 w" m: {, k/ k8 V# d5 H#else. w# ^& A/ R0 P: n5 C
    size_t result;
+ [0 ^! D9 e0 m9 K9 R- r    iconv_t env;& d! L; P' E) C1 i$ m3 ^

  W7 T' b! X$ H3 D( B; `+ D    env = iconv_open("UTF8","WCHAR_T");: o4 g; i7 z3 T% Z1 ]
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     5 }( D- _: R8 F/ t- [0 m
    iconv_close(env);
$ a7 K: O0 J; U! \    return (int) result;
7 y( W. r- I$ J, x! c#endif
1 n/ E3 z. i- L' K}  V: y4 ^' k/ x. a5 K/ V
8 g6 h# l1 z2 @/ p6 M3 i! Q! R
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)) p! t0 }# @+ _. j  {% e
{
7 J4 H' J$ g7 n. I4 f    int len = in.length() + 1;
3 k, W& L+ P1 j. ^- ^- s5 h, X. ~    int result;+ t- ^4 J+ }. J6 z! Q/ w( k7 L  X
    char* pBuffer = new char[len*3];3 w& }1 n& b& X: @2 ^2 f8 B
    memset(pBuffer,0,len*3);              
; n* W  Q4 W3 n& Z% M3 X, |    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
: D, z* b/ ^' P- {" ]3 D+ N% R# r! G    if(result >= 0)
8 P0 l9 w, t& D: u1 Q/ ?' y) A; L    {6 c3 q9 ^* \$ O9 r. _$ m+ B
        out = pBuffer;
/ c) C! ^9 A9 R5 i    }
& g/ \' D" q3 e  }# I# I  ^# {7 H    else
& M$ N  ~) F2 P; }* f    {- g' B8 Y8 K3 O
        out = "";
7 w( p* w1 V6 M; ]. \    }
& H, }5 ]$ e2 S% d7 n    delete[] pBuffer;
4 _0 p' r* h) @5 p8 K. C    return result;  P$ Q' C9 U1 I" w6 t3 ?( N9 P# i
}; S$ _/ S; ^; U

3 `: ]3 t5 A* b1 w) B2 oint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)8 P! n9 X1 l7 a; \
{- M9 z. ^/ Y/ I  i
#ifdef WIN320 s( {( {; l3 I9 T* {& \
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
8 g7 R8 p/ \% E4 n, [#else
  I% Q# C; S4 J. @. B" x2 A0 e    size_t result;
2 B7 x% ]  i0 {. s& C1 q" {    iconv_t env;8 i- [; Q  O* V& r; [+ `/ n+ }9 `
    env = iconv_open("WCHAR_T","UTF8");* Q$ d; W$ j4 I7 y
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);' {0 K2 l+ ?% _, d# j/ Z
    iconv_close(env);
5 U7 [5 p. G! H; V% ?' ]8 A) b; a    return (int) result;
' k6 a: M: V) I* I: \" R#endif' R% z8 x' J$ {4 X! M
}
: c8 M1 m7 N, J" v! g
3 F6 E2 T3 a. |0 Iint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)' W# V3 ^( x0 G, J/ s
{5 [* R0 `/ N1 `( c  h( X
    int len = in.length() + 1;, s# k8 j7 ?$ R* v) g* d$ g
    int result;
0 C) M9 G" j) }  {    //wstring temp;) \7 a8 g4 k/ m( h
    wchar_t* pBuffer = new wchar_t[len];
( f5 K7 G; e! S! y3 U9 G; g    memset(pBuffer,0,len*sizeof(wchar_t));5 V/ w: B1 {; @# \
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));; @# u" |: M5 V" P% o8 |6 N2 R8 U
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
4 ^, }3 y! n% `/ O' n    if(result >= 0)7 l' w' Z& s9 y2 K7 W
    {
- \; o) ^& x! b0 C        out = pBuffer;
& H$ \1 t9 m2 [8 @+ N& s1 v    }
( n6 e, Y6 U* `6 t3 R  F    else
2 h, k2 Z! S8 h% u, |8 k4 Z( ~    {- g# o7 G- m$ {% {& G
        out.clear();      1 S" W5 s& }' G
    }
: u+ }5 u- T8 n: K! e/ ^) E    delete[] pBuffer;  p6 b) l; p/ z. W; h4 d, Y# @" h
    return result;
& Y5 E2 r% w: V' s, N}' b: d) C! T4 I. x1 N; w2 ^

: A( G+ I" A' [5 D- r/*** h* n- k/ L( l. |$ @3 D5 m8 L4 k
*@file   
2 b  B" z8 |: I5 z2 K9 b*@author Jimmy
; \- \# T6 T- o( F% ~7 d0 _*@date   2007.1.16
/ a1 J- M/ Q& r4 p- k*/: M% e, ^8 x" P: Z! E+ |
#ifndef _UTF8CONV_H_" [( k# `6 R& C; P% ?
#define _UTF8CONV_H_
0 L3 M) a1 W9 P' Y5 y( E$ J3 l. |0 ]9 [9 q0 n6 W4 f
, A7 t& d" B5 T) z! ?
#ifdef WIN32
# A6 h( G2 b8 h#include <windows.h>! F; p1 ^/ H% A
#include <winnls.h>( J; f/ y/ _, J2 n2 ]/ d
#else
2 }$ f3 r7 p1 _#include <stdio.h>
; V* V/ `0 l6 E# j0 E8 r#include <iconv.h>
' J2 _$ U4 H  @& o: @% b' u" S) d8 k#endif. S( F( h. }8 C5 o
  d: O6 U. G  y, L
#include<string># }" d7 d9 Z# Q7 }5 m: z
' A4 {+ W" \% l, _: k2 ]

# p9 k+ j% F' bclass UTF8Conv
6 M5 T6 |; }  B9 C- @. B {
0 \7 q7 q2 m5 `+ I$ b8 C( F( G public:
% e; A; y0 _1 r; v3 r2 d: W8 J3 D    static  int codepage(const char* code_page);  G& {# ^& D- T$ d+ i/ o/ z
+ K( ^/ e: V& u/ s  e. C# J; M
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;. I5 g; B( s& T1 W$ X; i/ ?8 a

  k5 @6 `* J# t4 {6 U( G6 }    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);. \& d1 ?; l2 u6 b0 m6 k0 C

2 L! ]7 u/ ~2 I* W0 }. g    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
0 i0 K! e$ z, T! v% M, e* Z' T& ?; T- j3 W' T" ?
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;6 e6 B, t+ c5 ~5 D" \: y4 x, [
( T4 N3 H& R# \" y# E* f& T: F
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);# [( F- Y, e( V9 |% M( Z
1 p+ @) u8 J& t2 ]/ D
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
% I0 u1 y1 p9 A1 `4 j
% p3 Z- D- n; m3 \; `. h9 K    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
7 C  C2 R0 k4 i. Y8 Q: u9 F# |9 U& M9 n2 X2 x
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
5 Q5 m+ X8 h: J* z6 ?};! h' D- w" f4 U1 q
" X  q. W8 Z( f7 N
4 K6 {- O6 [' x* F' S
/ {1 i# O( g" b! ]+ O: ^

" D1 i3 e6 x6 ]
  c+ ]; j$ |! q! @$ c% B. C
; n6 m  L# P+ I5 H) Q, R
% ?. \! \9 o; g( l) p1 A: v2 o2 {3 o: P9 [2 g3 t3 t

3 J. ]( @$ j( u) U" {8 Z
4 A, m0 W) [1 L. a
; z$ y; s, R  R8 ?8 z0 D% |, z/ p/ r8 F" ^
) l9 A: p% |5 ?$ u+ V" D( d
& `& b" L7 t; R- O9 T$ p
' V( Z4 e7 H" I* V% Q+ @
3 Z$ [2 r' D" {) y( \  l( H, C
' {; `0 _, U. U9 [
, t5 f* X" p8 E" Y: R7 X1 g2 u

' o1 }$ S0 W7 L- b$ u  p5 h+ ~2 G& e" Q+ X2 t" p

" [3 X% [# F* d7 K5 b: N
/ Y- d4 P2 a% S; y/ O8 a/ B$ N  j" P. k  m% i+ P* G  x' w* @

! Z5 T3 _# w. t* R4 `9 Z" C8 ^! k. Z( Q( I* f

# g9 o. v0 ?6 F$ E0 N/ ^) n
5 |6 W: p& d# H- x3 P, L' G; u
: M0 ~# O+ y( n& C+ D7 X
; C! A$ _1 Q  j6 v" s#endif
作者: 6875538348    时间: 2009-4-23 21:08
这水快赶上黄河了····· [s:2]
作者: caesarzx    时间: 2009-4-23 21:11
但这点还不如我打飞机的成果多。
作者: cherrytea    时间: 2009-4-23 21:29
版主楼主忒不厚道了 2 Z* h* U  h& u9 @. a8 k
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
作者: firendless    时间: 2009-4-24 00:33
引用第2楼caesarzx于2009-04-23 21:11发表的  :3 o: k4 t7 r: a+ o) r$ _6 U) |
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
) |, K3 t% {) |5 ~; M4 Z0 }! M  Z) L, \! w- T0 D% h  ?
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2