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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~  e3 E5 i6 ]$ I- G1 {4 b5 U+ G
( R1 _1 H( S( q
灌个水吧...
1 K' D. ^# F1 K: {4 o9 f/**
( f& K; z/ p7 E  P/ v7 U3 A*@file   . j" O! a/ `* n( a
*@author Jimmy1 w0 Z; O0 a+ X: X" @
*@date   2007.1.169 M( p! @& \( `& K. h
*/$ ~0 o- k) d3 p# ?, R* j$ _
#include "utf8conv.h"
( h" H8 t9 F% m/ {& Y( k7 x* a! K
* |" Y7 {, h& C6 [: l/ f5 Y$ I% r
% M: M$ H/ G- T3 a6 t0 q
9 R7 F& \& O3 u1 ]9 D% kint UTF8Conv::codepage(const char* code_page)
) Z  s8 K0 O6 f# }( i{    * j& u* h; Q2 U, f+ T* p
#ifdef WIN320 _6 F4 M: e, ]3 P; C6 \' X
    if(code_page)
$ q& r9 f$ O" b$ _0 j6 I2 k- s    {         
8 h* F& A, \1 h; B0 _8 n, k        return GetACP();//既竚箇砞
' b% B  r1 y2 N* e  N$ N8 p" M6 e    }      
0 g( R  R9 J( O/ Q8 }1 Y#endif
7 l" d4 M" z- L' x- b    return 950 ;//taiwan acp
2 v& i; p" B. K, U" o}8 L! |% {$ |) E# K2 s% i1 J

# `! K+ @. P$ H4 s, Q, S- f3 x
3 R3 R8 v; y" |- Aint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)& R1 B! b: l3 x9 G
{1 N& Q7 x. F; Y& [: Z5 J  i
#ifdef WIN32& ]3 v: W) _, E* U8 A! t, @. N
    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
3 r8 i0 Q& Q+ z; X, |4 R& y6 b#else   s8 Y: X( q+ G# a- V( H
    size_t result;
7 q! t, E/ y. X1 l    iconv_t env;
7 H3 F# n( x0 g! W    env = iconv_open("WCHAR_T",code_page);" A  v0 o9 ]* I' V- {
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
+ `; t; {0 W9 X- Q: {: y! [7 _: R    iconv_close(env);
, |- H/ e) a8 f( h    return (int) result;# g* @: [2 C+ M; [* v, S
" E/ r" y. c/ o: D( x+ ~
#endif   
+ ]: t, c3 k/ X3 g: i) Q}: Y. H+ B2 S$ b

) L, w+ [1 m$ qint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)% C/ j  q$ }: o8 b
{6 V& {# d6 k5 ?, X( x! j
    int len = in.length() + 1;
( @0 K3 u+ h, N2 z    int result;$ w+ O' F0 d" [6 G8 b( w' m
    wchar_t* pBuffer = new wchar_t[len];4 w! `3 }* f, G+ f, ?  }1 \
    memset(pBuffer,0,len*sizeof(wchar_t));8 b+ K1 q# }. Y. ~( {
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));+ f5 P9 q5 T$ S
    if(pBuffer >= 0)
4 n* D5 c. }4 o- V    {' Q/ D; C; w5 J6 H3 X0 N( c
        out = pBuffer;- c- Z1 `2 b  r! M3 r& ~7 ?
    }
6 m( H# h7 g; E* b0 ?, F7 v. @    else
: v* w3 C1 z( L% B/ a7 x. D    {
$ }9 f4 O8 a5 C# W" `        out.clear();6 @/ D" ?9 t% `* F/ r# A
    }3 e" p9 z8 g# F+ f
    delete[] pBuffer;
* f# ?* Z# d( b    return result;' g5 k: v$ V7 Q* k
}% T" }$ G& K* b& k  R
% A  p3 R4 V# [8 t: Z" T+ l
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)  `; c3 Z8 g7 o2 u( q* ?
{& a$ }( g3 E4 p/ l; a
#ifdef WIN32  U, y' o1 i- j, Q1 t+ M  o( q
    BOOL use_def_char;
+ I( N# D/ c' |1 z* V    use_def_char = FALSE;
4 m" Y" f3 N2 l- X    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);5 ^( P. v7 f1 Q9 v* d! f2 j2 Y
#else- h9 ]' G6 x( ~$ I# a" w' T" ^
    size_t result;" K# x4 p( z9 r$ k, K0 g1 X
    iconv_t env;* S  m. w" [  X8 N5 L- G
    env = iconv_open(code_page,"WCHAR_T");$ k$ |0 s0 c) q2 P- e4 j
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
) H9 y4 U4 ~2 C- x4 H- q    iconv_close(env);
' e8 b. O6 E8 \    return (int) result;
4 a) e+ t* v9 B) x#endif   6 J, D: K9 I# ~( K3 C% I" ?: Y
}2 K% ?( W. D) ]/ j" [5 l& i( L5 T
7 i; ~2 s7 k) z) G- l  A1 K/ i( w
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
* M5 i; _- Q) E4 Q; L{
- W8 G7 `8 X# u6 q: J, I    int len = in.length() + 1;. p" j( s" z9 N5 l/ J8 u: S+ v
    int result;
0 p$ j! i% I, \/ z    char* pBuffer = new char[len*3];
$ W: u( u$ E" ~& l$ _$ u0 ~    memset(pBuffer,0,len*3);
+ w; i# |# }  N3 C+ e: N" f0 x    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
  S" v7 K7 y8 L2 `    if(result >= 0)
2 Y  _! ?9 e" ]5 z) w    {  
$ X9 y) `) A. n, H        out = pBuffer;. Q) q7 ?$ \: V: u
    }
% m, X: N. Z2 F# v( P, H- F+ I5 s' c; b    else1 X; `4 H! A. S6 ^
    {# K" `  T* ^$ L
        out = "";' m8 T8 P5 t1 a7 b
    }9 h" g" b0 E6 t( a, A% S3 m
    delete[] pBuffer;
3 O. l5 w! C+ c5 a) q    return result;! O; `- O0 i2 H9 M
}# ?. B( s. `( ?0 J" g

+ `& O3 L# T$ q% G2 t( W6 |! V+ pint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
( G6 O2 {0 g5 u* s& c{3 i# V1 O6 ^2 W6 }- ^" b
#ifdef WIN32
  h9 }: l; J  e* d6 I- e- `! l- K) {) [( U9 U5 s& X
    BOOL use_def_char;
" @/ W- \. J. m    use_def_char = FALSE;
) l2 H& Y6 Y: L. h    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
- M2 y) O8 [: q+ S6 F9 |#else
; Z' Z2 K2 B1 d9 n& E    size_t result;
5 a( U5 Z* X) `+ E1 v0 O/ A# W    iconv_t env;
7 g7 B3 v! E) D. W" C& |2 \! ?, i. B; A) o
    env = iconv_open("UTF8","WCHAR_T");
+ W4 l0 `# [- ]) |; U9 C    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     6 X2 H7 l; T& t! W
    iconv_close(env);
0 k+ B4 F; @3 c+ k) v# D) E    return (int) result;
: w) |! \$ S- u% p2 z) C/ h#endif0 V; Z5 f1 @; d) Z
}$ o, u0 V' e( w# Z5 ^, R

' \, I% U2 W0 ]8 Y! e  mint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)5 l9 H0 D* A. Q& Z
{
# x5 v5 }5 e+ Y( l) D    int len = in.length() + 1;3 c8 O( B' D; w& @. y
    int result;
8 y, K5 T$ a. L    char* pBuffer = new char[len*3];
8 z6 M; C) g+ J% w; A) i; Z8 H    memset(pBuffer,0,len*3);              0 n! h' M6 `( r
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           & U, Z. r2 o5 i. k2 y7 C# u1 t1 ~
    if(result >= 0). f8 R+ a7 D+ h. ]; Y/ V
    {
8 }& R( ?" B) J0 o% a  M7 ]. u        out = pBuffer;# `7 Z* }: B7 A- Y; e5 t
    }
/ y; L" a/ z/ B( B    else
0 p. k: N% |) h, D    {
+ ~" ]1 _- Y0 t5 z- i* d* |        out = "";6 Y; u7 G: y" @  R! w
    }) {; l; r. U6 l& N" v$ ]# b
    delete[] pBuffer;
4 m5 v& Y! W9 D6 r/ o: }: j) X    return result;
$ |( V0 q4 K, @+ }}; t" L* K$ x3 S0 S* n
% _/ ^& W3 `+ G% P, Q3 ]' C
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)* l5 W( b  }2 i' V+ P
{
( V1 y) r: |2 y2 U1 W$ Y#ifdef WIN32, [* f+ p) r3 |% B1 b+ Z
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);- n' M2 A# S1 P: ^) G
#else
! ~) `, |" |" @- {    size_t result;. t) \) Z" G2 y( `1 d
    iconv_t env;
# Y3 O. F4 \! }" B8 Q  I1 F    env = iconv_open("WCHAR_T","UTF8");
, @3 e1 X9 V, b& _6 ?1 B    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
( \6 E$ i: \, s/ ]! x    iconv_close(env);
  }) ~/ N5 G& m& B; H" G    return (int) result;* n' s" B5 A/ n) V8 X+ Z0 g
#endif
" E- `2 P2 E4 H3 X}, O) ~" \$ E, B0 o5 w; @
  U% {' c. v5 L, B) r9 v$ M
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)3 G. A0 }! T- w3 ?3 n
{5 n( F" p6 ?/ Z8 Y6 O
    int len = in.length() + 1;
  ]' l9 x; s# }3 k    int result;( H9 {' B: T7 N7 h% S5 p0 _8 V
    //wstring temp;
/ o2 K! O* d/ s& g. g- L: p( f    wchar_t* pBuffer = new wchar_t[len];
7 @4 i  b7 w5 o9 Q6 x( \6 O    memset(pBuffer,0,len*sizeof(wchar_t));; f, R9 Q) h" c5 _% M0 m: I: w# y
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
  z+ k0 |* O/ S! B6 F, E- f& @9 M" S    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));8 I, D6 d; \9 n
    if(result >= 0)8 a6 Q/ u4 k$ K9 q, A
    {
( s% d" B. H+ S* a* V% V8 N! y7 V        out = pBuffer;0 f1 t# g' x8 G. g7 r" g9 `4 Z
    }
! e9 ^" _' W8 t3 N' `( s+ L  y$ D0 A/ V    else
8 p. y. c" R4 J+ |( b    {
, M) f- Y4 q! V# D7 [: m+ c* e3 A1 v) T        out.clear();      4 N# J( A$ K) s. S  _
    }
) s3 T' }8 _6 i) F3 b    delete[] pBuffer;
, D, W' O) S- X; ], g( N3 [    return result;- ~; d1 V- n' B  g/ a6 w  {6 J
}# O. k- A" F9 r

7 l. M, f9 {! _3 k$ M5 t; a/**
) x; z; i" ?' z5 d) u% F8 j8 ?; W*@file   0 J5 W. M( t; z: _3 H' ?
*@author Jimmy# i5 h# ?' g" }6 Q
*@date   2007.1.16
) c! j; y& T2 p/ d7 U! @& V$ k/ f*/1 S7 t. U" O8 w) P4 s+ A5 I; y
#ifndef _UTF8CONV_H_0 s. _. \; Y/ L
#define _UTF8CONV_H_
' L; [: t$ e5 ~3 r+ x- ^5 u$ D- [/ s- x8 j& D0 r1 N( e  {
- ^, C! p( C5 a9 U
#ifdef WIN32  z! G8 M2 H8 f3 n9 Z
#include <windows.h>
, O- ^0 M& I% D8 E4 d#include <winnls.h>
& v9 a& c) B: x% H$ g! a9 T  F#else/ A" H* Q+ ~* U& d
#include <stdio.h>
( C& E7 O. M# R( \3 h#include <iconv.h>% ]& R. h/ K6 o& X3 Q8 k
#endif
7 D) W- L  \* Y& I2 S9 F+ Z7 c6 d$ f  l" `) p
#include<string>
; r  y( P4 u$ O" @5 D% _6 {  x
; @& D% t+ T2 Y' f  j; ?' K8 k  I  d9 d9 _
class UTF8Conv
% O8 O' J& R6 {6 u* b+ t {$ V3 D2 Z) I$ e8 h- O" I! g7 V
public:
# W" y- r: G9 V, u$ v    static  int codepage(const char* code_page);
$ `; g4 w3 w4 e3 ?# ^
4 j: A8 G5 r) N- n    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;: }, I/ d1 Z0 e

# \: I; r0 {; w; d    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
3 F2 g  r' t" h8 b5 f
; I5 s  T" ^& M- d    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
! e2 j: T% f# Z) j" x+ k
' O6 [1 r' ], M' K- _    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;, {* p" y( ]- D2 g" H: o

* H0 k8 B9 N  |2 w8 `$ M    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);4 k, z5 d% A$ }. h9 S) `7 i( w
  _* d7 Y1 }7 D  D* o
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
3 d2 i$ a3 T4 D: i5 T; ~4 S. z. h/ P# m' [, `# c  G5 I4 g6 \
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);3 C8 l1 K- K/ r3 v

2 [1 S( u" A  V    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);7 h& `$ i8 i) f2 V' J' C' R
};
( U3 X0 b/ O+ v8 f+ l1 H! Q0 q5 ~* `1 m
/ s% s, d1 w: m# Y
& O) j/ u5 ~' }) Y5 f
- c7 D7 m) C! K* v. ^

" v  q" ?! Q' X7 }
5 v- ~8 d' T7 K) k6 E# e. C) U+ L. {9 j1 J
; V5 N; m) d5 r0 X4 ]' P9 G
% X" F5 O% N8 C) s* }- @( \
5 o$ P1 w5 e& Z/ W  D0 u

7 t1 C0 x# W' ~' M# ^
7 {! m; z/ e) y9 a
2 y2 _/ w' d4 U, t1 Y2 p2 u8 ]
# V; o6 O7 ^. i' w* T  @5 S* O& ]/ N9 e; g

; t8 ?, Z! f9 x% u  ^# y! j& {* ]+ E  \
2 h# g$ _% I7 `3 @8 B. ~. y
8 S! ^, u6 r8 O$ ~$ s# ]0 u

9 Z8 d3 h( t$ I8 v5 U5 V* Z9 x' c
8 k9 S& }8 |+ x5 c3 h7 x+ a' Q6 D
' l' ~8 M+ C' Z" _6 K
7 N' i- _9 o! k+ `/ }# J3 J. h7 o! [
3 ^0 v; A  g8 @  F6 l

+ F, ]7 }+ }5 R/ Q2 [; t% \2 C! S7 h4 N

; ]/ x% q; r$ l1 h2 }. X
2 I1 y& J& n9 d( d#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
8 ~2 G" b) k. m: _; V% p这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :; b, U: u) s7 @( X6 Y# U* `
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~4 {6 Y" F7 b0 f

5 c+ o: H! ^- T6 O1 K- Gand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

高级模式
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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