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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~( s0 X9 f2 w3 J. {" [6 A, {3 n
0 K' |# c. ]5 W. L* P' u' f0 P0 ~" j
灌个水吧..., A" p: m+ M7 i% O( @3 r8 s
/**
+ Y7 P6 U! z) I6 L*@file   3 j2 ^: L8 D3 s+ S8 D
*@author Jimmy
$ y, I7 U2 N, u8 l*@date   2007.1.16
- h- ?; D" \- n( {; w% R*/# K3 d% k* Y. ^6 G
#include "utf8conv.h", e# W( n5 L; u  A3 O
! {" i$ H8 j5 n1 O. U
6 j; ^3 d' n! r  I
" T/ ]/ D  k, L* T6 e7 J
int UTF8Conv::codepage(const char* code_page)
. C$ t5 z0 V. \+ @7 @5 z{    2 d5 j' Z  @2 M3 `' ^3 h6 R% R3 y
#ifdef WIN32
& \' [3 X& A! H. _% C5 p) R. P5 |    if(code_page)  D& g9 @, t+ j  N6 P
    {         4 ~* O% E' r5 y7 T& g
        return GetACP();//既竚箇砞$ d6 w; J* J! r: |
    }      & r% \- w% R! E8 L% D7 @6 y
#endif2 @8 z% X! _  U- z/ q
    return 950 ;//taiwan acp
! L0 _: y& i7 b1 h) g  B  }9 o}
0 h# R% R5 B0 f) ]6 U& U; c9 ~! W* F, n1 J2 \& ^
5 n- ?1 {8 h4 \% p5 W
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max). G+ F8 q& w# m  G  V, u
{& |9 v0 E: J' W: l4 y" E+ t
#ifdef WIN32
4 k& p& [2 p: |& s    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);/ d4 [1 Z- w# G9 v
#else
9 P- l1 l, `9 [    size_t result;
* A7 x0 a" }' G0 k    iconv_t env;
  X0 c/ t9 Q, f5 u+ P    env = iconv_open("WCHAR_T",code_page);
7 R5 Z2 ~9 b. Q% F    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
! a# ~, S; H# B( }    iconv_close(env);) y' O7 v$ N6 E4 G
    return (int) result;4 t. D6 u, @1 G  x
9 J: ^9 T8 v, a# G
#endif    ! _9 u" Q- e) L. _' g  u
}$ X$ }6 Z% z! b. D
2 _/ u8 W8 H. h7 x( _0 J
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
$ h7 l2 K# g- L% y3 k{
0 C, u/ K, J8 Z: ]    int len = in.length() + 1;& L" j( `* }7 }* _; J; d9 H
    int result;
  l8 J( O6 E+ Y9 d9 |    wchar_t* pBuffer = new wchar_t[len];
/ b$ Z5 V" \7 X    memset(pBuffer,0,len*sizeof(wchar_t));4 K7 K- x+ c7 K6 s% M. K
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
! M) f8 J! N8 ?' ^    if(pBuffer >= 0)
+ L2 w, p4 r; R2 Y, o    {# Z0 x5 V/ h5 U7 u* P6 Z' S
        out = pBuffer;
. u* X( j. \; H2 i    }9 W3 ^4 w, B/ ^! r: Q; N5 G6 ?. T5 R
    else* f6 C! C1 y! }
    {# Q( u) E6 G/ R5 E1 n$ I; }
        out.clear();
, Y6 ]- }9 j- u0 c' W9 Y    }
9 B4 ?( s- j, E    delete[] pBuffer;
/ K% e; G4 t$ ]  C3 @. s    return result;2 X! ?& F4 j$ `  v
}$ T1 W; ?  t8 x1 W( _

, k$ i" F. o3 ~4 n5 T; Gint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)5 o+ u8 R: F5 h5 X9 U
{( u2 w' W2 _5 o2 u: N  V- ^5 e5 J
#ifdef WIN320 |( @3 x3 _4 _, O4 B
    BOOL use_def_char;: b$ ~. d9 X4 d; x
    use_def_char = FALSE;
! j( Y* j% u7 c% W    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
  Z: G% L& \5 A" f4 ?#else4 \8 ^' V6 x6 T% M( k' b7 d) @( g- U
    size_t result;
) G4 m; x: D! w) F9 s! I! Q    iconv_t env;7 u. J2 }5 N6 R) ~# D
    env = iconv_open(code_page,"WCHAR_T");
7 p3 M" t3 l: q. y+ N    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);* N; q1 g8 y  S% S" m
    iconv_close(env);1 ~9 j8 N0 Y  z
    return (int) result;: ~0 ?1 ~, N: g4 z; m( m$ ^  c
#endif   
% g# E# h- P. Q* U8 @+ E}) o+ N9 Y8 e! x! c) o

2 _0 s( F, j3 vint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out). b1 |+ s6 f& K# o
{1 q0 j2 P, x$ y5 f5 n$ U, w, H
    int len = in.length() + 1;- T8 A  o, s9 ?7 ~5 E% ?
    int result;
5 }+ ?( m5 J3 `* ], A9 R! e2 y+ O    char* pBuffer = new char[len*3];
  B* m7 G2 q6 ^0 f, n    memset(pBuffer,0,len*3);2 a" }) _2 O) h' n0 }! E
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);# |6 z( |; q: x/ ~" N7 l# X& Q' z
    if(result >= 0)
3 M5 d3 a% |/ |8 i  m( h. O+ D    {  . G; m6 B8 C6 _3 ^2 d
        out = pBuffer;
. R* P5 j# p: u- G: V    }
  r' l6 W8 _$ a. |    else
1 a3 p5 m# `" ~2 P) g- j: R    {
8 L6 L( `3 n- t( B( C        out = "";
  q7 b& P/ ]8 Q    }
- B- Q* d4 V  w  g! L    delete[] pBuffer;! i3 L: S0 G& x& h) u# Q
    return result;
& p; U2 G' T% M}
" M/ S, i/ D' p6 _/ t1 [3 X
- n$ p: E! q1 Y/ M2 Q: s6 h! Xint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)+ _& o! \/ p- U6 L7 n( V& G- R. L4 O
{' {  ]) B/ E9 Z4 D
#ifdef WIN32
- v" d- D) k/ K0 N
/ o2 @2 ?' |& d0 X6 @# R" k7 o    BOOL use_def_char;8 K7 B1 I: {9 F0 c
    use_def_char = FALSE;
: A  C/ C0 i  c9 k. w    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
( ?& K% o. B- q8 u- \3 t6 C#else
/ x7 W# X, p! @' M; ^0 ]& t; `. Z    size_t result;
2 s, ^8 O* y3 p) ]: s; G4 X    iconv_t env;! |6 ^4 v  I' e: f  o8 t3 G0 u
+ h" T( @! j1 g% M# R
    env = iconv_open("UTF8","WCHAR_T");
" C. E  Y) f* _* k' ~    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
) u# E2 h# I8 R, P# O1 D1 P5 W    iconv_close(env);
3 r) n4 P! e3 c1 e0 V; g    return (int) result;' T: s/ `5 m; ^  ?7 q' n4 }
#endif/ U/ p2 K% c* S1 p2 f2 D3 s
}
8 V* A( B0 `3 E& Y# e$ }% ~! \8 g3 ], ^0 t4 e5 f' T' `
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
' p- U, i; f% ?+ D. W  L{, M# Z7 O; g% F4 H, c
    int len = in.length() + 1;  c$ O4 |3 ^) a; m1 [# h/ P" q7 E
    int result;
* S3 A3 K; e& J; e; W4 T: t5 M    char* pBuffer = new char[len*3];4 A1 W6 B) `2 j/ w6 e
    memset(pBuffer,0,len*3);              3 y( I" J3 D( Q- ~# F) S
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           0 j2 w$ Z' z  a( @& Y1 W
    if(result >= 0)
& s, E- _! g$ z  c- ~4 d) D    {
( A& M: }2 y4 {, Z- U        out = pBuffer;
! X8 Y3 u4 c% C' y( B( }    }
% m1 e- |' w/ q8 K. D8 x( m) ]- k+ r    else# d9 Z2 v- Y& H: g% h  r
    {" w, z3 K! d# V% ~0 q/ _
        out = "";: m3 H$ r) _: H# @
    }
# t* `* ?5 `$ _$ B7 ~! Q7 x  a, W3 C1 T    delete[] pBuffer;
( N  p# n/ A9 k0 e4 h9 b7 m8 p    return result;( P- `, p* ^$ W
}
. V# e- e' M: K$ O' q
  J% B( i: E8 E0 B( F0 ]* B/ Oint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
: r8 ?9 ~- O- l" s: s8 s8 i{
9 n% i) v" u: |* e! _# w9 p# P#ifdef WIN327 i$ E! c: K1 |: C. ?- P( j) J
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
( C: q5 }) F: L7 C( ?#else! q1 K. B8 T& G: v( N) x# J
    size_t result;% `1 n" t) H7 B) ?' j9 w3 d
    iconv_t env;
6 ^5 P5 K9 e  `    env = iconv_open("WCHAR_T","UTF8");
4 P7 X$ V& f1 O7 V6 r: U    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);+ a0 X4 L* S( }5 Y( I4 ~
    iconv_close(env);  ]6 v0 U& I) |: N3 B3 p9 z
    return (int) result;
2 a1 N4 K+ W% w#endif5 n2 Q7 x) q7 M$ `& O( A
}. p& ^! \  k7 }$ v
# B6 i1 \$ |+ N+ m7 A0 e
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)0 Y5 i: P. X: f; T$ H$ G. b: \8 U
{
4 `, E  z7 T; _+ ^* e    int len = in.length() + 1;, P* O- [: k0 u2 A' \8 i1 o
    int result;
  i2 K" K) o0 m7 K7 ^* V; ^3 g    //wstring temp;
5 X# e# O$ |" t/ I    wchar_t* pBuffer = new wchar_t[len];
, V. T+ U" Q$ [9 R; k- U/ r    memset(pBuffer,0,len*sizeof(wchar_t));
0 o; O5 x5 U/ h1 ]3 G7 B    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));0 z5 i. o# T7 H+ m/ c/ K% }8 r$ c
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));% j! Y: @  K2 u" f- b4 Z
    if(result >= 0)1 o6 n% }; z3 g8 [% i
    {. _# m7 `! _1 J0 H- F) G! y1 P# E! r
        out = pBuffer;2 U3 n( P7 Y7 X5 u
    }: q. T- q2 o3 N% ~$ a" x0 d* s: B
    else
  b  j' m1 n0 Q" h1 z0 N% _" i    {
( w& I$ ]8 b% K  C; Y# v        out.clear();      
0 a/ S; c1 ^( y. z* y+ {  j$ ~    }
! N( E! H3 _2 _3 O    delete[] pBuffer;: G  Z8 n% p0 v, b+ F: H
    return result;6 u5 d/ x& _0 E4 w- i, P
}, N( b% g, s) b% w8 Z

0 j+ W3 M2 ~6 n1 R/**
# i- g: p  w% N9 _6 p* {% C- B*@file   2 f) F% P- U; Q
*@author Jimmy4 Q% |8 V# @2 b- e4 N( {
*@date   2007.1.16" B" e" i; g! y! b/ f
*/. S) F$ i" Q; x+ U% ~4 ~0 b
#ifndef _UTF8CONV_H_
$ J) T+ I/ g) w- q/ \#define _UTF8CONV_H_6 H( p4 c( S6 y6 b
/ Y7 i) L: Q9 V1 N" \. y
( l7 R5 A8 H+ u9 L! z, S
#ifdef WIN32
! S4 Z3 f5 S7 R* @#include <windows.h>
/ X1 Y! O7 K3 }, i#include <winnls.h>
7 E) e# E& ?  O% T#else  U! w) L) ^3 c5 k) T6 s- y
#include <stdio.h>
" t3 F* Q  u7 W3 m) M' |/ w5 r- [#include <iconv.h>, I# B: b. ?+ M4 c
#endif/ R1 _. d! @" V2 v5 {
% o! D% J0 U! T9 h" q
#include<string>/ R7 f! e8 O; F1 K4 F
0 O$ {2 t* s; E7 K9 u
# f; j. H8 l9 G/ k1 }9 k+ G
class UTF8Conv
1 r# m8 O9 ]- k; d$ p {) E( Q1 ~- Q% e7 O1 Z9 s
public:0 w( W. l% g0 q* o8 j7 r2 [
    static  int codepage(const char* code_page);( d. E9 x. ]" j0 x. _

; `1 d# K2 K: A9 B4 t4 M  F    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
) N6 i# m8 s1 W$ Y. o! Z' e' E- i+ Q" _7 _  [3 |. }: ]
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);/ Z. R6 |# G" O3 Z/ S4 r9 e, r

: @1 Z; ]$ Z. d    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;/ p& H* T* q6 h+ D2 x# Z/ D/ g

8 p% z  {% s, z6 D0 f( |    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;( y6 N' w" r5 P

7 U0 |. B. M6 H( w    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
) s' f( s# C4 c1 B" T1 z% d: a' M, W4 N1 l6 z; a
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);3 m( }6 t2 b" X' N& R8 y) h
, L4 o+ w1 k9 a0 ]5 s5 R9 |
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);  e# s3 U& l, L+ M1 d: O

1 l( a+ V' ?& D7 d" c2 \    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
+ y# e6 @; k9 X% u9 \5 p, Y};" a/ v7 K$ M9 K2 _7 F3 \- [

* A  W, ]: ]- x+ a+ s5 D( H& h; Y+ l: C2 O( H

/ S1 g$ V% K2 u. O0 H7 b
( M" l0 c: T+ X. m/ a5 d- @2 ]
5 S# V4 T# R  ?3 z0 p) t4 O( N) K1 f: J, R5 O( Y$ O8 E' i

  q3 J* |$ Y/ R2 D) G' g8 K% |( Y2 |# y1 n( A

4 S) T/ y4 |# j( d- m$ g  h& D
$ O' q: H' F( V9 K+ O& E, N1 ]% A, W

* x7 w! x% r& m0 Y# ^6 `; ?% }) W' |
" Z$ S& d; Q9 K; N! C9 w+ L5 y. G8 X

5 ]' x( ~# g7 h' {9 A7 F' n# p( D& w# e& C: ^

4 O$ ]+ W9 C9 e( ^+ @& h- N: [# O1 r3 G) O

+ E- G1 F7 ^2 F' k
; o' K  x; E8 V* T0 C! X0 p- z) o9 Z# o! k; V6 F1 a6 y
, v9 w7 o5 ~  A& _8 V1 ]' `

8 K: u# d3 n9 A& ^- c
9 t/ k5 Z# _. ?8 Y3 h2 E
$ e% P9 g- S% e; ^, |) ]/ G7 ?
3 s; U+ W% ~4 _, L$ Z* ]) x
$ G& p& @' b$ S0 R5 @% x# ~( t5 o& M
' ]* ]1 ?- Q1 ]2 ]
2 x6 e  Q7 l. c+ m2 T5 l#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
% M9 l/ V. j) c2 s- K' S这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
$ `$ d2 R, L- \4 I9 \5 V但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
/ O4 e& U4 I5 w! U5 V& ]+ t; O/ H8 o; V7 L$ K, u$ K% q
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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