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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
  U& W) X. J3 X8 j3 b* B0 o  {6 F. L! ]( ?
灌个水吧...
, g8 x9 E& h3 {$ X4 r. G/**
1 w. u1 F* r# A/ P& {* j0 }*@file   
0 a' t9 I1 y9 ^" y4 `4 M- g- R: [0 G*@author Jimmy
  O8 w5 u6 E% O& J*@date   2007.1.16
- x2 E! d0 c; W2 {*/
; K+ T4 v! R8 R& M, G. a3 X#include "utf8conv.h"( w# T2 s, w" D6 H5 ]7 Z
( Z; E8 B3 r8 _5 t& |2 W0 Q

% j" ?4 {, C9 F0 k  \8 I% @4 h% s$ p+ `
int UTF8Conv::codepage(const char* code_page)
* y- p; Q4 O. |) N  _7 Z, a9 F{   
+ q% T& w" b: I& o#ifdef WIN32
( v/ q7 k4 n- J2 m0 x    if(code_page)' a5 I% q0 ?% w% G" v4 i
    {         
; i3 Y+ \5 L& [0 z, @2 P        return GetACP();//既竚箇砞
- `- j* v$ ?& r+ i/ O; w# ~    }      0 H9 O8 U$ j$ B
#endif) w- G4 m' D# R3 _; D
    return 950 ;//taiwan acp2 S. [+ n4 b4 H5 }" s
}5 I* P% S7 u: u  N, e6 c

7 m% d; o5 ^( a2 R$ G9 z3 A* c) r! ?+ ~' y1 r  ]5 T) L
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)# Z$ q/ t$ P+ E  U! h
{1 S0 D0 d9 g! z: |/ [; L' K! e( q. h
#ifdef WIN32
$ W. t+ C+ p4 q! x$ K    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);3 G. @3 Z+ A5 i
#else
2 d% j# l) C2 @% u8 Z/ Q    size_t result;
% `! V3 h$ t% K9 Q2 x- k    iconv_t env;
7 Y# J1 ^, l3 _    env = iconv_open("WCHAR_T",code_page);: E- N  l: _* K; ]5 e
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
$ F; L& ?3 O5 F- Z5 G9 g    iconv_close(env);& c5 t- k" B# M5 d/ J) i
    return (int) result;
& S9 x0 H# \9 `* o, p8 D2 R. P
5 m+ h9 r% \, }0 c#endif   
* O8 c8 z; j1 @; }}2 m8 ]4 f. [8 J' U; M( c

9 O, U# X  q( h/ dint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)4 [/ G3 ]& X4 d3 |8 }% C$ C" R: B
{5 Q: @! H/ n/ g+ j3 k0 f9 d
    int len = in.length() + 1;
0 u8 J/ ]) H/ W! ]( b' E: I    int result;, u* X" M, _" v" u4 c: r5 \) U
    wchar_t* pBuffer = new wchar_t[len];3 B: F  t6 R7 q! G, j% n
    memset(pBuffer,0,len*sizeof(wchar_t));
8 N4 F8 [; x) v1 p3 ]" Q6 c    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
3 m4 `: x6 y1 Z3 P6 x2 ]! I2 D9 c    if(pBuffer >= 0)
- r! u/ w! ]2 z# A! a% ~    {* C7 {2 R; e' k2 S
        out = pBuffer;+ C4 I. [9 I, y3 P; Z
    }5 E) s$ ^! ^$ g! [" \; t0 U7 e3 J
    else
1 [. R& M$ V) F; `' G8 \5 A6 i    {
& x# }) r* c4 r2 j* N. E/ \1 {0 R        out.clear();
9 Z. v- T" t+ g) j; n) b% t& `    }
: ?; h+ @) T' e6 _! c- M    delete[] pBuffer;/ g* Q; s  f; C4 I% H4 a
    return result;9 Q9 R+ R3 a8 V  P: Y1 \. G
}$ v+ {+ I3 [' u- P0 ~% B( Y

, t& D, g1 d. `  W+ V6 @4 Vint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
3 c4 X2 u  @8 Z" D' y) J{
% C# w4 ^: M, f2 B# @3 X; W#ifdef WIN320 ~: {# u" ^  ^' s/ ?$ m( O* z% m
    BOOL use_def_char;
8 s' w$ p* A5 h3 a    use_def_char = FALSE;! q7 N" ~; H. `; r( l% n$ }
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);9 j" I) c2 l; w; ]0 D& O4 g" w
#else
% l: p. C; X/ u* V# _    size_t result;3 A1 U3 C( d$ c: ]$ J8 r& t: `  J
    iconv_t env;9 U5 ~/ ^. s$ E4 q- i7 x6 g* K9 s
    env = iconv_open(code_page,"WCHAR_T");
- q( Z6 p/ G9 O- x    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
% [1 _- u1 w" ?+ H    iconv_close(env);
( Q- o+ q) H0 X) z9 p4 c% _    return (int) result;
" C0 O( s$ A, c% J3 [#endif   0 Q: U) z! n4 i, @0 T
}
* y- k1 S- N" m+ _- J* V; m7 P  K5 y7 S, K. t5 F* @
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)2 j0 G( a$ [2 K* J: ]5 g, L; k
{5 r2 X$ D7 b4 J) A! |5 }& u( s
    int len = in.length() + 1;
" N! X( k, y7 w# e7 Y" s    int result;# j# C. X& ?0 Y# h* ~9 n2 {) m
    char* pBuffer = new char[len*3];. W6 f. s! M  {( {
    memset(pBuffer,0,len*3);
$ V' c* w: h  D4 [1 f+ Z3 Y    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
8 D* F! t; R9 A7 n    if(result >= 0)
4 ?; t- D* R; g( k  v* c    {  6 A5 ^) v6 n" M8 n! f
        out = pBuffer;7 m6 J  A( ~5 J3 o( b9 X
    }
$ h. e4 g1 w& I- L5 c5 Z3 x    else
4 ~& ^. L* W: T* W) W- a    {
! J' @/ G# @$ A4 P' A        out = "";& K1 G( A5 d# R) J% w
    }
* \) ]! k2 j( m5 a    delete[] pBuffer;) o+ C( F+ U4 c8 Q
    return result;. x  {! |7 O7 k/ q! q8 F
}
6 C$ P1 G9 J5 r  W* a) A  F; w5 ]* V3 _; Y6 `: i* o- [, ]# }0 M
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
  ]# i+ x' Z. K! j) c7 g6 {{
* j: A, y, S5 [#ifdef WIN32  S$ S( h& S7 v; g; T

5 @: V4 J+ p2 I; c6 C6 ^. O    BOOL use_def_char;4 }* S7 u8 v1 @0 v6 s
    use_def_char = FALSE;
# {, V7 l3 a! {    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
' |! c# l8 [; _" s" a#else. S1 C. A- f2 }  v; E4 a" b) _! ^
    size_t result;7 G1 X: D+ @, U' G, y
    iconv_t env;* K1 h0 Y" K: B: z
3 D. \8 f8 B1 O3 p( V2 D9 Q
    env = iconv_open("UTF8","WCHAR_T");4 P: E8 i5 a- B/ Z
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
' H2 z4 x" E$ D: ~# b    iconv_close(env);
  m8 f+ R) [( Q" `    return (int) result;
/ l1 J1 c7 e7 Z#endif, L# F) G2 \0 W. [, q: p
}8 k6 E& N6 X4 ?% `1 ~8 j% g- x
; U- h7 Z" u0 Z
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)" p+ {  i4 a9 A* l1 l) u
{
% B& S; A' w* Z    int len = in.length() + 1;$ @# L! z5 o( V
    int result;' @5 H7 Y# \# Q+ _9 X
    char* pBuffer = new char[len*3];. r/ f* m- @  _9 q4 v/ q% `- s
    memset(pBuffer,0,len*3);              
' n- ]* Z9 x' y+ d- h, ~    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
5 d0 H" i  q, }    if(result >= 0), s! v# B' i, b( {( u7 s
    {* ]* z- G; h$ s4 n' j
        out = pBuffer;) f: I4 I2 B1 l! j  j" C: Z
    }) g, @8 Y$ s% h; t. N
    else
+ T* E5 s; U  M7 ?    {
  Z  D. W1 J7 G4 u- \  t4 R        out = "";
  d6 ^3 d8 v( z* W( A  Q  `    }
, X% O2 n+ f3 I: H3 p* u    delete[] pBuffer;' J; l# G2 Y) w( R
    return result;
# h: o% o2 o; m& ?& _  l1 V}- g. c0 n7 h! e* F
9 d4 J# R0 U. i( t. Z3 _
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
+ S! L1 E) Y) ]* v9 `# f{# @' O+ i# F3 A9 ^+ p6 f
#ifdef WIN328 D7 H7 z) l7 i
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);9 n) a  F4 s2 K, m
#else
& Q; E% |2 U5 s( {" e    size_t result;
; U7 g/ q7 }( ]4 O+ v: P4 C    iconv_t env;
6 O) j' g. N2 z1 N. s3 ?: F' \! _" j/ }    env = iconv_open("WCHAR_T","UTF8");
) t( m' R8 h! a4 U    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
3 y0 N7 p$ H9 Q& c    iconv_close(env);" r* E6 e! h8 G1 V4 W  |% w1 A# R
    return (int) result;8 C, D2 G/ f9 L$ \) E
#endif: v) x# B) e9 n+ R* {
}. i* }$ V7 X/ n. z- n4 a7 U

' u7 [' ?: S9 |0 m( c! `/ T# Oint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
: V3 m1 y( P! }- E: i{$ t4 x' U- y7 Z8 V: F
    int len = in.length() + 1;/ E( u3 g3 s/ A; Z( X$ P! F
    int result;
' z8 X; @# A) H6 H1 k; `/ U+ J. S    //wstring temp;
' i( e6 ~$ E. v0 H: @2 @+ ~7 V    wchar_t* pBuffer = new wchar_t[len];
) E- H" O6 T; x+ t    memset(pBuffer,0,len*sizeof(wchar_t));1 n9 p: r, {+ B0 H: s
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
: n! j0 e* p: u    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));$ B' N2 X* N& z9 P3 u
    if(result >= 0)
! l$ a3 ?: t' \    {5 _5 C5 [' U3 h( v1 _
        out = pBuffer;
* O( G: l8 i1 z- \1 V    }6 W) B* q7 C# d3 d( e
    else
! E9 b( H2 _2 S) W, E7 ^    {8 N1 S/ p* D+ o. a2 J$ s
        out.clear();      
& D0 G/ o/ }; c# l5 T4 q    }: V6 O) o+ @- U% l+ L# H1 P  h. ~
    delete[] pBuffer;) q6 Q- P7 B+ Y
    return result;* X* E- M& P9 Y$ g5 G
}. |0 ]5 d8 N5 J5 m5 `9 C

7 U4 O' Y2 j& w; n; a3 l/**
. d5 z2 {! @7 `/ U/ R*@file   & \1 u  O9 z+ H; v" R- U
*@author Jimmy6 w$ v' @& i& \$ M* h
*@date   2007.1.16: R6 _+ |( }" Q7 m& P( K* K. [; m# K
*/# P: m- u/ x. o$ J
#ifndef _UTF8CONV_H_, G' w6 Q3 c/ `5 f& C0 e
#define _UTF8CONV_H_
  i, D* i5 k  H6 t& _6 x6 I8 W; C! Z& Y9 c

$ Q9 W9 y9 h7 V" @) Q#ifdef WIN32
1 {9 p* ^' F! G7 s4 R# t& p#include <windows.h>
6 y8 `8 |' ^! _#include <winnls.h>
4 \; `8 ~' V2 m# O  w- u#else
4 r* c$ g5 E4 [1 E#include <stdio.h>1 o9 e' y) l2 q- q
#include <iconv.h>2 Z- L3 R  W5 S$ f' D- Y- m$ z
#endif
6 E, @. C& U7 |7 O' E
( O3 Z2 b, q8 t, y- |/ ?" y8 A3 u#include<string>- h( c! C/ h; Q, t4 m6 ^
) Y- A; i8 T& ^4 C% _
6 o( A- a( r( e3 z- Q
class UTF8Conv
3 c  C/ C2 i: x% m' A {
$ {7 d& T& Y% B4 z& ^5 I public:  f* @4 x: \1 L) I! w; @, j  h
    static  int codepage(const char* code_page);1 O6 P5 b4 ~# u& r' X) k8 E1 T
4 ]  {# b4 Y/ y& z1 `) b- P
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
$ V+ t# Q: h& y& i" k0 y: E; m3 k+ N! L' A  L3 @$ @4 U
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);1 M9 W: v- k& E- N6 |
3 w1 h6 i  k! d0 y8 T5 R& M
    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;* ?- H5 D4 e2 ~& \* ~( v# s+ Z

7 v8 k  L. [6 q( ~9 b    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;5 E5 x% U6 E+ g, o7 y
1 m7 ]4 v5 j6 K4 f" I# ^( w
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);3 k& O' Y+ \- G& H  @1 b

3 C' |' _( J9 E/ ?3 t    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
6 [$ c# x! h' b$ T  W2 u- d; z/ y6 F) s8 n; Y' x
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
5 M/ @; E+ ]( D  n) l' m6 ]* @2 z+ ?) U' R
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
% p0 z% T% _3 W$ o0 I0 Q};* D2 j% s! y6 ^8 P& I- h

- Z+ o. I: \* G5 I6 S# q6 i8 d' Q# x2 E  n
- t1 G  V4 ~4 w# P+ f+ F6 O
, E( Z) H% A0 Q+ O

  Q. e! Z7 O% r# Z; b
$ F  h) D& k7 |  A4 n5 G* V" Y) z0 K( J  F  A& Y: {1 p$ [

; K' j: q& n: R+ L& y2 }5 I( I1 G
. K, T; V) @$ F6 b" }
+ w2 e; d, ^# j& ?7 r3 L; l2 b, e" L9 L: Z9 a. \. `6 e
2 F7 P9 L# \$ d- @
0 {5 Q. T" H6 ]  O/ |5 u/ v! [

# K2 f7 S0 r- r2 ^8 [, c
" g6 v* z" P- t4 n) `+ B
/ B3 S$ ?3 u: ~8 q( L2 f
* ~+ S4 t( _2 `: p+ c+ ?6 t7 E- L7 ^: W

9 _- _1 s. X5 E6 c- S# s8 }
' [$ Y, D" L- b! r% U6 ^* z; t0 S
+ z2 a5 a- a: b/ V3 m: g
9 r/ F" I& P) n; Z2 v+ f* F( v* ?6 ?7 |

6 S6 c% Q0 n  j
, y9 h3 w6 P* x. T" l2 A" l
, d. l: @& [3 B1 H  }3 W6 s, q6 k: ^) Z% O7 P$ C1 b+ k

. b9 h* X: O; Z( c0 v) \/ |- j; l  T+ Z
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :! ]' |6 y8 V0 E) o( R. ^3 H2 b
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
; y5 Z* u  d) B/ M0 }. _- S5 |5 G, o, Q$ E, T5 H  s& u. G
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
, I) _% r4 t+ [2 b这样的话我要申请平民新人年度成长超级大礼包 [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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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