冒险解谜游戏中文网 ChinaAVG

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

作者: firendless    时间: 2009-4-23 19:44
标题: [报道]重新报个到,申请个新人成长礼包~
[报道]重新报个到,申请个新人成长礼包~1 D1 f2 w' {- O) @' e

/ y+ ~; T" P1 {; c% y2 e' J, @  R灌个水吧...) k1 _7 I! B4 S# F; r+ s
/**. o6 q- |5 O7 |( v: `2 G( D
*@file   
1 a& B$ ?/ A6 _1 M: R( ?*@author Jimmy
: h" \! ^& {7 N9 d$ A9 Q" T% a*@date   2007.1.16
) f5 z; }1 x# I*/
' P+ N4 T+ ^6 Y' d) {#include "utf8conv.h"/ H- G$ i" F3 ?" `4 {
* `9 ^+ Y+ z& A+ @  y

6 M, v$ W+ f% ~" }  P2 H. G  w; a" e! E
int UTF8Conv::codepage(const char* code_page)
6 Z) u  z8 h3 J: I8 X{    + m. \$ k0 q5 I
#ifdef WIN32
; }" ~4 S# ^, H+ s: W* L    if(code_page)
& f& F: f5 ]9 _* T- J    {         
2 H6 D# A2 U) X3 L        return GetACP();//既竚箇砞
$ g8 ~: W/ d% [" j    }      & r( ]) D# S( X& r
#endif( l2 f( I/ Q5 k; X* Q! Y' R+ h" f
    return 950 ;//taiwan acp
1 j4 s! E( M; [# M' r}! o! C$ }  w7 c# M5 A0 y) ?& s
: c& @7 O1 \6 h% u: L7 H2 j* H
* [2 H' Y  l7 J! E5 w
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
7 b2 g! V( k3 c# N4 f5 L! S{
) J2 i2 T7 S/ C8 B; _#ifdef WIN32
2 H" |, _: u" {3 |5 w    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);2 }4 l, `+ q  t! ^/ @6 f6 e
#else - B7 W- I& L7 u7 ?$ ^( g( J
    size_t result;6 j/ k" ?$ A# V- H2 y
    iconv_t env;
& {/ u9 X. c6 J1 k    env = iconv_open("WCHAR_T",code_page);
; U; ^& v" ]- o2 ~2 W    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
$ Z0 i$ D$ ^4 ~! j3 e5 T( D0 K4 [    iconv_close(env);' {& D- o, S% c/ y
    return (int) result;
- c. a; z6 ~! N$ ~: D" ]7 X+ c  _5 @- k0 l) G/ ~; f
#endif   
5 G1 I  M* k) n2 j. s}
( o* D/ W2 w* Q1 H2 o2 X
8 b3 _& O( H( M- @/ Tint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
) A% ~% N+ U# |8 h2 ?{
  U# {+ g3 W; O7 s2 C    int len = in.length() + 1;
; ~% n; f/ P! Z/ W! P( p8 ^9 Z    int result;
7 ~( u, K# T) T9 s6 v    wchar_t* pBuffer = new wchar_t[len];
+ U$ P2 A3 t6 K    memset(pBuffer,0,len*sizeof(wchar_t));, |$ {9 l! j0 I9 f
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));- u' _: b# t! b8 A4 E2 k
    if(pBuffer >= 0)$ B  W6 N1 x& D  O: m
    {
8 R+ u1 H6 ^' y! F9 s        out = pBuffer;
8 N# k4 z$ R* _    }
3 H. Q( K( F7 |; F+ X/ O    else
# f7 c1 h) s- e0 F$ }. A    {
% }% X( }9 ?% C0 d        out.clear();/ X* P. D& x# R4 D. b) N
    }  H3 O, v% Z2 O" P- e' C
    delete[] pBuffer;
9 e5 d7 q# v( T    return result;. y8 g% v7 k4 _4 h1 P- ^9 V+ a
}
: s5 [5 x8 V$ l. D( c0 j; `. \
  x2 N, B% T$ W3 ?1 {int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max); B$ Z8 h- Z% ?- [; H  {
{4 r. u0 M2 i/ _
#ifdef WIN32
; k" X& M! A0 ]    BOOL use_def_char;
# U" Q) z$ [5 g6 \9 P    use_def_char = FALSE;
" `$ q  D# `5 m$ S5 Z    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
. ?& b3 @8 ?/ r* f6 D' v1 a#else
% k* Q( s9 D9 L& L8 J    size_t result;# h# h' T0 z0 ?
    iconv_t env;4 u' k1 v! |* \4 `6 t8 m1 {6 v
    env = iconv_open(code_page,"WCHAR_T");
; Q4 f6 P# H+ c    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
; D+ h+ R+ l# \3 C    iconv_close(env);) T1 D6 y1 u! c
    return (int) result;
6 L, c/ p2 x; ^% m: R#endif   7 F9 o2 Z& c$ c7 _
}
+ ~7 t+ \4 Q: T0 \# L3 X9 ?: N, [; h  L2 `4 @" o/ V
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
2 r% o, i' v5 L{
1 W$ j% O/ p3 D    int len = in.length() + 1;. ]9 [& b4 H3 }) B  E# ~- K
    int result;/ B0 Z* q! a8 K+ t( j
    char* pBuffer = new char[len*3];4 j% T+ J0 W! i$ n  S4 B
    memset(pBuffer,0,len*3);
- ^" I# L* W5 [" k. ^0 Y( Q5 V    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
# Z- a: W" O- A% B    if(result >= 0)
+ g3 d6 M. f. }; M+ n+ V4 L3 M    {  
8 [2 ~7 g4 j1 }6 ~6 F* V        out = pBuffer;% w+ k! M# K# A' d- h( B9 v
    }
" p- ^3 U3 Y6 A" D- b+ W; q1 B: z- g    else& M/ ^% J5 d/ i/ R7 d
    {8 F4 K1 _% T5 U% Z% z9 o! |
        out = "";
6 l1 V, u: ^- o% e    }
& v; k' U9 _1 Y1 E    delete[] pBuffer;
! f/ ?2 q6 |9 Y5 L  B* g    return result;7 O! j, y5 r4 L7 ^) F/ U
}( A* {+ x# L2 M& ]
$ F5 s( G" E& G' @1 A! I$ i
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
2 t6 G* D0 p0 s9 w6 t{5 s/ ~$ `; O) M  Y: ~8 [) Z) p
#ifdef WIN32
3 y* x% W" q0 y7 @2 M0 Z! x/ t
0 r$ G" l: i5 C3 k8 L! `    BOOL use_def_char;/ g7 f7 l) X, l+ j$ R1 T+ A
    use_def_char = FALSE;7 _. Q: f; u7 q& P0 l
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);% j+ w" }2 Y: K* s  Y1 U- ]5 U/ U! B
#else8 ~0 v& |9 }; v
    size_t result;( ]/ M/ c' T& r  |7 \5 R4 F
    iconv_t env;/ }9 |- V: C( t* B3 S' t- k1 _

. A9 g. o& J0 t0 b* L- Z' ?    env = iconv_open("UTF8","WCHAR_T");
$ O  R. R# `/ u: q2 \2 g/ M    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
2 [' _3 Y0 q2 H( t9 o( T2 G    iconv_close(env);4 v6 W2 |% Z( ~. d
    return (int) result;  A- u9 q! Y1 g" C
#endif, q; l5 m( n7 u5 r' b
}+ e5 k) Y: t: T+ x8 V! T$ J# P) }

& x4 K6 {2 ^) {7 I( X: Wint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)- U& M8 m  e' y% k
{
, N% }8 a9 L; b( ?' T5 o    int len = in.length() + 1;
/ f. b) S- {6 m8 j$ a3 Y* C, [    int result;
3 O4 S$ V+ D( l) M    char* pBuffer = new char[len*3];. n2 ~* n% [" ~) y  S$ Z
    memset(pBuffer,0,len*3);              ! C8 U" K) n; G- w" C: c8 y
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
* f  `( v$ l% ~9 z    if(result >= 0)
" F- C( u9 _1 s% |    {) |6 e0 e3 c4 T" t) x9 T! @
        out = pBuffer;2 l  T# G: Z' Y( u# K( J' o
    }
+ m- a2 u, t) a& r9 Q    else
: U! q- p8 ^$ h9 g+ @8 J! r    {
. u' j: z' r2 \: j/ r        out = "";5 a& I3 V7 c' Q
    }
' n" N4 B, k, {% O4 a- {# Z    delete[] pBuffer;
  P5 i, U+ Z+ P3 V& q5 {. K9 v+ W    return result;& O6 b8 s' `3 m0 U/ k
}
/ ^2 K) z7 A9 i2 b- b, l1 t4 h/ X  h: ]- U' \9 I! l. Q
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
# }5 I4 P# d. M7 h2 B9 u1 K# V{
: `0 \4 ]( r' E2 l#ifdef WIN32
$ m8 i; U+ m6 ~% E    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);& a+ P4 h' D3 B/ T- x- i' a
#else  v2 m; _* K3 X/ j- C0 g
    size_t result;' Z: S* i7 `6 I! ]5 Z7 i4 s& J4 _0 g
    iconv_t env;* ~+ Z' \9 s/ l( q* L7 F* q
    env = iconv_open("WCHAR_T","UTF8");
6 Q- _% W( e" K" z& `. L    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
( {/ @( e, l- `8 P2 \    iconv_close(env);
" r$ b; [+ R- @/ h; Y    return (int) result;
. ^; |! l8 Q7 S#endif9 I4 m1 P. |% x& s
}
, z$ t; ~" ~0 `/ C6 _6 \8 v
! b; L& B) H! W% aint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)2 A2 {( y; V3 _7 A
{
+ N' ^. Z6 J' {    int len = in.length() + 1;' Q" `# R% k6 @2 H$ k
    int result;% Z3 L4 B* G  I: g8 w; ^4 H
    //wstring temp;! q9 l/ i+ s: [6 v; M5 M, ^7 T
    wchar_t* pBuffer = new wchar_t[len];  x: z) E( W" M- A
    memset(pBuffer,0,len*sizeof(wchar_t));  c) h" g: F  S
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
3 Y+ C- j( ^, D; c' q: ^    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));' R" p$ t( {" t6 R4 I* i- @
    if(result >= 0)# N) }) X4 K( s) J! X' e
    {
; E0 V" B9 z* ^! i) w5 L, N$ r        out = pBuffer;! s. y/ S; {# g( b3 I
    }
8 V9 T2 D4 X- M    else
$ |' q$ ?; m. ^# d    {+ a  o: @* w! B7 ~
        out.clear();      
4 @9 U' u" \# b) g    }
6 ?* E8 j6 e7 H( c    delete[] pBuffer;# C$ K$ G& O4 c
    return result;; \) p* E' ~# @3 ~* i& j6 ~( W
}
. E) p9 @1 g. a: S) N; ^" ^/ e. }2 J& T9 Z) l9 L+ s  g
/**/ K7 m$ a7 q+ |" b" P
*@file     @' p8 D# y) E0 b+ N
*@author Jimmy/ X7 G2 A) ~' u2 k
*@date   2007.1.16: Z: P$ O9 n& N+ [# I8 M
*/( g' K$ I9 Y; k, S: P
#ifndef _UTF8CONV_H_0 P9 v# j! E7 H: }6 F+ U! F
#define _UTF8CONV_H_
% J6 [: @7 U; u; I9 g: E6 ~  R% Z) l$ z4 Q* t0 N) S
+ B1 S; v: b- B7 \. Z. j& c5 B
#ifdef WIN32# c) i: j( |# L! W
#include <windows.h>4 y' Y( p# U: W2 G& F& i
#include <winnls.h>
( Q! j" K: f9 o) l#else
( B  b) T( _9 o" v#include <stdio.h>' Q0 x; X+ }$ |- I& X
#include <iconv.h>' ?& F. H: ?: m
#endif' _# r+ g7 b, M6 Y

- E' W# H+ N8 G; Q5 j" Y7 @5 S#include<string>4 z. A! c0 ~7 n1 E6 Z2 a, j

* _& U' t8 S% j* F' ^( F! \5 [7 D+ A
class UTF8Conv
- C" V2 U) y9 }" i) i {, [; }/ l, e' v
public:
5 L, i! C+ K; h! L    static  int codepage(const char* code_page);  }1 X4 n( N  y& I) c
5 E. a+ n" j# y* |
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;7 `  q& R4 ]  o6 E" B

+ F! |0 B& y% P    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);  Z% ]/ ^2 s- R5 y0 Z# W7 D

% A1 `, \  J* C% L8 r0 w$ n* d8 Y    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;. f- r: N8 n6 I
: x" t2 e) n6 L( k" I
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
1 p5 G7 Y  |5 L6 w7 }- F' r
) @+ T& d; @# Q  h2 N) g    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
! G( X- t3 v) E- W
  M0 D5 m- C+ P* L; z' @    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);8 }' r  M. }  ]( I

; b0 I" `( V, K" k/ P; h    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);$ v% U3 W( e% j5 u0 |" y* M3 z" c' x5 w
: ^3 U6 a* ~3 h: z$ \$ \
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);! N3 L* K5 ^. @2 D. L$ r& @
};# @6 A: Q- v$ z0 s3 K. m3 l) F
9 U2 ~0 K4 C/ E& B; ?

' b9 O+ Y/ W, N9 S/ [8 q- z  k
3 m" t  P7 F% [+ o
+ I1 E2 ~/ V5 l+ v$ F! g* `4 _7 F, \8 Q0 @! x5 [

0 W3 |' E( U! G: C: B, d4 _0 I- N4 |+ D" w8 t1 Z! v
+ q* j. A+ X6 O! C0 I+ g1 t
0 H9 F& G; |8 c1 w( S8 T
1 P! i9 |* B4 e: c1 W! t) p# j
  y3 b' V/ k# t: t; V
: v2 ~7 x& t9 L) [
; o% d% ^; H) h. R5 T$ A! T

1 M* X5 X. x  X3 H& \- _4 T
- k- P& W2 e  \+ U2 _
$ V' c/ x9 ^4 |# Y
- c; J8 m! U+ F- q! C* k9 Y, S
9 p! u3 X9 X. q+ e5 u- C
* }$ N5 q& D  }* N* r- O' f; D+ |# K5 p

& e; c. P5 ]3 y& @1 ~) a- p! ^; @: z+ k3 d* k9 U
6 p4 m5 n2 [1 j/ {! D  u
' F# ]/ ]2 }' a4 n

2 q' t$ z9 T. m9 n1 Q" S! M
3 n, y7 ]9 |1 R. p% v0 t
, g" H/ T6 r" W- t4 c! C/ j9 J+ T9 Z$ f: U; F* u2 _9 M
1 ^9 X& E4 V. U' a
#endif
作者: 6875538348    时间: 2009-4-23 21:08
这水快赶上黄河了····· [s:2]
作者: caesarzx    时间: 2009-4-23 21:11
但这点还不如我打飞机的成果多。
作者: cherrytea    时间: 2009-4-23 21:29
版主楼主忒不厚道了 : j1 J. F3 H) h! ?1 Q8 B2 o& x
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
作者: firendless    时间: 2009-4-24 00:33
引用第2楼caesarzx于2009-04-23 21:11发表的  :
6 ~& E; l! A. s2 C6 @但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~+ C! }5 \  Y( w; ]% \1 n

/ r; s8 N1 p2 Pand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~




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