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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~# c1 O  k; `5 ?1 a

& A. p; t) V; {7 R灌个水吧...; w2 A( Y6 N0 Y6 s. K: a/ `1 G
/**6 J* f2 i8 p3 G5 o7 a/ R
*@file   
5 `% z5 u$ z; I: ]/ k( X# E# g# \; n*@author Jimmy
$ u0 b, P5 s# I( G* A, H*@date   2007.1.16
& p+ S/ \5 U- W2 T' B9 E*/
: c/ _$ R5 y! E#include "utf8conv.h". K! F% \1 ~) c# S$ i
+ ^9 B# W2 ^: B% w
9 A; L. R- t+ z+ @; A, A

& S( R7 _4 Z. T' K$ uint UTF8Conv::codepage(const char* code_page)1 v7 `7 t+ v- ]
{   
' D0 H5 i: y+ e  |  _#ifdef WIN32
0 v8 R' Y8 q4 M* a* @2 l    if(code_page)
2 T& ~- h! K3 U7 f+ g5 h    {         
+ Y' l! t0 w% B* t% |        return GetACP();//既竚箇砞
# Q3 {0 X6 x3 F$ U9 P( X1 D$ u4 E    }      
' P8 ]! c( U. G* l7 X#endif) B7 k3 G/ x, ^. V  g2 s
    return 950 ;//taiwan acp
; r# l$ r: B& M6 c}* n  m5 n3 r  f, j7 A4 Y5 f
8 t+ G( L  E; r6 G3 C
4 G/ I( G) c0 Y  z  O) i' K1 j2 u
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
5 b! |* l7 n% Y# s6 }* ^2 h6 g{) e! Q) w, B4 Z
#ifdef WIN326 e/ K3 v1 x8 ?0 `' g0 b
    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
% c- p- v" i& e% s, @#else
- H: V5 S6 b" F# V- {- n    size_t result;
0 `0 s, R3 d  E8 K" @* [% r    iconv_t env;; j2 m# m5 b8 c
    env = iconv_open("WCHAR_T",code_page);
, b- K( M7 b% j+ N2 O$ _    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);0 ~9 d& S. I1 v
    iconv_close(env);1 W" N/ S: ]; ?* @
    return (int) result;
6 O5 D; a% G! D& f3 Q, h& v5 W1 J% c; @
( k' K% g0 v2 t#endif   
3 \9 d. F; H5 D8 t$ O  ?}- d; u8 l* Y. N3 O' W
: @5 V4 r- }( g# a4 H
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)6 c, ]# ^/ s4 w' a
{+ e" p( x0 m1 \
    int len = in.length() + 1;  x0 o! H, n2 c7 Q& w! O2 r  [
    int result;% ?) O: I9 @& l7 }/ @2 ~
    wchar_t* pBuffer = new wchar_t[len];3 |$ z( \( s2 }' l- S8 U  X
    memset(pBuffer,0,len*sizeof(wchar_t));
2 w; M) d9 u. O7 K    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
) G( H" L, L! Z; C) m2 w# s    if(pBuffer >= 0); m; v& Q% @5 a; ]! f
    {
) {, Y3 h, P/ G' [        out = pBuffer;: o5 {: a/ y+ n
    }
. v5 p" m0 o+ X    else
7 F0 T: y% x$ B: Q    {: D2 }9 M  A0 g$ {$ o, [
        out.clear();
- t& y- f  @- q) l4 A    }
* f0 `- @0 L5 ~, a    delete[] pBuffer;. W- `( M  u5 ?% @# z: A; V. `
    return result;
- ?) q, L8 Z8 h+ i}
+ U+ X5 b/ X; j2 J* I1 k, C+ z
5 \8 d) t9 h5 e0 y$ c3 D5 }3 gint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
+ L3 @- A. T6 L+ z{
3 \) r. t$ W. u( u: x. m3 G#ifdef WIN32
. v9 Z' I. O9 l4 P6 B/ Y    BOOL use_def_char;% E( _* @' a; @% U0 V' }' D
    use_def_char = FALSE;
7 J; W7 |4 N' x8 D9 F    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);+ p# l' F. D. Q5 N1 y1 e& m
#else
2 j  J2 o" N2 x  t2 F    size_t result;4 O; y9 d2 ^& l! P! V7 p- O: t
    iconv_t env;' `3 x1 r$ e1 h, v7 Q# N
    env = iconv_open(code_page,"WCHAR_T");3 g; c$ S( H  r+ J8 U9 O7 Q$ O
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);; L& E2 u. v" F: m
    iconv_close(env);
& J  |3 O* ]8 O    return (int) result;
$ K  {* l  T4 E5 |$ _$ j#endif   
; p/ H8 Z3 W. R5 K, \0 _) w}, E! I% W; L' M3 @1 D' U

5 ?: q! y1 _7 Y6 R* Q( yint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
9 X' Q; {( p) \{5 ?2 V1 T5 m; ?' I
    int len = in.length() + 1;2 _: @1 |9 R' t- I
    int result;4 q' X/ L8 }3 o
    char* pBuffer = new char[len*3];
% D4 E/ W  p& K5 W2 I    memset(pBuffer,0,len*3);* T6 `7 ^' a# e& p8 C
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);0 w( z! S- D0 c, R& U4 ?, P
    if(result >= 0)+ l8 L: J( j* v% c  F
    {  
: ~. O9 g2 Y( X& N! @7 @, I        out = pBuffer;
  r8 {0 L" b' I: ^3 I3 k4 }% |0 C' e    }; ^  i3 J$ o* @2 v
    else
) Y3 E& ]" a9 a4 [' `    {+ g2 B/ j0 S; C) X
        out = "";( f; t; S; t9 o! P6 r
    }
9 F4 I! [& ]5 g# c+ o4 \: V& R* \    delete[] pBuffer;
8 R+ }! Z. V: g0 I+ d    return result;
2 _* o- v: Y' }}
  b* J0 C+ u$ A
+ d% v: H5 B' p8 _int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)( K" k5 P% I* X+ v
{
6 i5 ]- }. B, F4 U: w: H6 g#ifdef WIN32
( E/ z' g* V( K, o7 z" ^! A5 ]& n
9 l6 t7 ~- `, U& {    BOOL use_def_char;2 @! P, h' }& J
    use_def_char = FALSE;  R$ c  [% B  s! f1 C
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);$ ^9 G  s! T+ k0 F  C
#else9 T2 o5 V6 k: Z1 D: ?2 o
    size_t result;( q; o  i. ^: |1 Q: d% Q
    iconv_t env;
/ I% R7 n' ~7 G* i* }1 K$ t9 g8 N& J/ z* }
    env = iconv_open("UTF8","WCHAR_T");' z" @' l5 V' K6 l  E
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
/ m$ v* r- B- j5 c2 Q9 ?+ ^4 Z( ]    iconv_close(env);
/ J9 O$ j9 X. f/ V& O' n9 x    return (int) result;" P& ]+ n: k4 U: \' j, h& S1 a
#endif
* _2 Z# ^5 p5 B6 D2 r: P}! C  }. A8 m) L, u$ ~. a" J/ y

7 Z$ E2 I7 O9 p) |1 v4 Oint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
; i- r* ~( {, }1 |& {  w4 ?+ W{
2 }6 o* R! p0 `# b5 P4 h    int len = in.length() + 1;. f& U/ M; w, O) A1 R; Q0 s; L3 [1 e
    int result;' d, ^8 J% B% b7 o* x( d: j8 L
    char* pBuffer = new char[len*3];: K; [0 J! w. }( c6 \$ Y
    memset(pBuffer,0,len*3);              ( D  S' p+ O" `% D7 p% Y) X
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           6 G8 ]* `  w- E! Y
    if(result >= 0)
' h, \3 D9 Q9 d/ |    {! Z( g5 p8 n$ Z: N. y
        out = pBuffer;
- N; G; K* d2 [+ |" b" F    }" T( h! M4 u. B0 O, e9 p
    else
5 O3 y0 x% x+ G5 Z    {& ?* H" t" i+ A" N
        out = "";1 y# L5 e3 E/ K# w. O
    }
5 m- e4 Q9 M9 q- X$ Y    delete[] pBuffer;
6 u! q$ I' D6 O, A- d/ W# z    return result;
0 b& M8 H' v% X) h) k. A- N}
5 T8 p- G4 Y" |9 K- y
# k3 k) q. m. I" N; _+ \int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)) f% I# h) ^8 [6 j/ \
{3 D0 s7 [  {# C' k' _2 z8 {5 I
#ifdef WIN32
4 o6 z2 j* K) S4 b6 f- }    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);/ t% i0 {) K# p- X% D. O1 O' ?+ A
#else
# Z$ g/ i- c8 [    size_t result;+ F: D$ S; p( J
    iconv_t env;
# a3 D) j$ k- z& `6 E    env = iconv_open("WCHAR_T","UTF8");
  f, s6 Z& s7 o  G, Q6 \    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);# J% p8 L* J/ V
    iconv_close(env);" N5 n8 _( U8 p4 H7 \
    return (int) result;0 L9 S; _% x+ H7 ~
#endif( ~) w6 k8 S1 l6 s5 K3 r7 P! O6 g
}
' R8 V) U- f- l* |  Y4 t/ Q* A2 y
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
3 P) t/ a* H  N8 Y{3 m9 @* H+ @* O- ?
    int len = in.length() + 1;$ c- G! \3 S" F7 r$ N+ ^. @( U
    int result;3 {2 H9 ~' D+ l# |1 A
    //wstring temp;+ q, \# ^2 a  i: w
    wchar_t* pBuffer = new wchar_t[len];
  M3 `1 d3 o/ W) K6 y2 @    memset(pBuffer,0,len*sizeof(wchar_t));2 |0 G+ S1 f. m1 U/ R! e" l
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));7 u- n6 g7 z: o$ M
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
7 T2 _5 k( o3 Y3 P. P& t+ I    if(result >= 0)8 y4 @5 `* _5 L, O* q1 \
    {, \  C4 O: k) v6 I" ?
        out = pBuffer;* ?4 T+ F. K) W5 T
    }5 W( M2 k. G( K6 E- ^9 |
    else
3 a$ F! S) K/ I  t) Z8 G% H    {
# l! M9 R; {. l        out.clear();      
6 e/ {8 @# ]( P- E    }
( A1 k6 k" e* n% j  }2 Y, K    delete[] pBuffer;* m9 }6 Q1 Z% N7 r( [
    return result;
4 ?5 I/ Z. w, b3 x}8 z+ F- j2 R. A
0 o2 M! J- c/ D" F+ B
/**
# K6 p: _1 y! }: V1 P: x6 S$ A*@file   
9 S$ C6 G2 O6 |0 A! m*@author Jimmy3 H# n  H0 U& W  {% u  _
*@date   2007.1.16
6 a3 z: }6 h, N! O+ M' ?*/
5 ]: D3 s& Q- Z1 j) E#ifndef _UTF8CONV_H_
: f: Z& Y. z- l) _( ]9 m- S#define _UTF8CONV_H_. }& H$ q( u1 S7 x

  j7 M; D) i! k4 k- l3 @$ d$ M' X: P9 _7 O
#ifdef WIN328 U6 G( t1 Y" S3 _9 W
#include <windows.h>6 q- k  z8 C6 Y1 w
#include <winnls.h>7 z# m4 h+ `5 }" a  Y
#else
1 x% g, w/ E" [, v) ~#include <stdio.h>2 m5 S5 `. Y' a; E( Q
#include <iconv.h>4 G6 G+ H: i$ w; `& ^* ^0 V
#endif
2 r& h/ S; S% R2 v# s" a8 u, {: i
% L* D& U" Q' y  U' A#include<string>1 x9 {. |. D4 r+ c  v/ A- i& Y! |

! ?% f" H+ J+ {7 q  o! j( Q9 U7 j, C
class UTF8Conv' _% [6 P3 Q3 q( E4 b! x
{2 @6 K5 Q* b# c+ m7 `* P
public:* C. J( ]/ U. G
    static  int codepage(const char* code_page);# d6 h/ Y% v4 |

- c5 I& |! `& W% E    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;! f0 ^, a8 O% ~- x- \- q9 [
# R5 W# ]; ~! n5 g' ^2 p; d
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);% B2 [8 x8 d  g

/ R( C! r; C& R2 Y    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
0 n. ]2 \5 H7 {+ z; z2 x& ~! i2 @. l% |. n
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
" J& O/ h$ }+ s
: ?7 O! p5 f* `* G0 Y6 o, M& |& d    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
  \5 a  ]  ^# o9 m
; e- @- M$ v4 m2 M    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);) m, s3 N2 L8 d2 d3 [
$ M. H( m; r( b6 R/ W( J
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);; C* C6 V( s0 j- Y0 a

$ K, D) t. d: n" `; t1 E- v    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
" K  c! s5 A! \, M/ F};
3 n- ]+ k* |, h/ o5 m6 T* [+ [' O9 x" G8 l( c- A

6 B/ g1 y. `" {4 k! y" D0 |
2 B; w6 ?5 [% `! I7 T1 R! S- r$ O* S6 Y3 c9 F# D1 ~7 X

0 ?; ~, K7 K+ M% o. K  g. e7 A; ?
% a9 Z( H% K, H5 V! d7 e  s
$ n& F! a# U/ H7 w
0 r0 }! M7 Y* P/ r% E

$ k( G% F6 E, S- }2 y. n: z9 d1 d4 D- C
  w2 s; O- u- F5 f5 ^' L
% p, s4 g7 C- ]  U6 z

, f* o* }5 A/ \4 k
8 T$ |3 ~$ Q6 g) u: `" I6 K8 W% v* f+ S% }' X% l, f# y/ Y

- w, R4 U2 k1 r. j1 e5 D) i5 W- G1 [* c$ @* \, A

, ~8 Q- R" N8 I1 e  M
. l# o+ M8 Q8 c( y: [1 G0 C* z. t: f; v; G5 z: x4 P3 I9 Q2 p

  R7 g# e& u  ?, K. S" `
; z3 o: G! _" W9 ]
  k7 H0 G! f+ c" r, k. `7 D6 p
3 R' y" n: F( d% [, ~% T8 w  g" d0 ?, f8 j9 O8 t5 \
, `0 c' y- j1 }9 p4 i* u$ H- Z

- Y* g9 M  L  L- g
! v: E( u8 a1 o; s* ?#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了   |1 @" }: x& J( }) G3 [% J1 f
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :4 g3 E( B) ?/ h. E3 x, ^( p
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~% |' c: g8 p7 R  j0 P
2 j# H0 g* H" s) C; {
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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