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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
# t9 v. _7 B1 @
5 A" t/ P" ~# w% S; O" ]灌个水吧...
4 C0 r3 \0 \- I( D/**
5 B: h  n$ w, @' a# Z*@file   
( W$ u  N8 \' Q) k" e* B*@author Jimmy2 V9 v) [& X4 F5 z( l. B
*@date   2007.1.16
, A0 C8 v& J! F& ^% A*/
7 l! T5 t+ _3 ^& m, S: j#include "utf8conv.h"* a# F5 y8 V' j% H4 u9 t5 q; ^
5 o9 ?  c; C0 _9 i' f
& X  f1 F) Z( F/ T( W
( _% V0 l% d0 `2 H, F6 e+ b0 G! {" |* |
int UTF8Conv::codepage(const char* code_page)
1 Q  ?5 ]& w. b2 X" x{   
3 `5 p1 `- g. l4 D. D* t8 N#ifdef WIN32
& q- x0 `" t, ?/ X* J' ?    if(code_page)
0 R, z% c4 U2 u6 |: S    {         
0 {+ }1 `! C$ p( u        return GetACP();//既竚箇砞: e# i9 q7 T# G8 y
    }      * i) r3 \: o% r( }- C
#endif6 s2 P" G; w1 Z
    return 950 ;//taiwan acp
' R; Q5 U5 _4 o) E. n3 S. R}0 u# x; s7 `- j
* }5 Y  ?! n- H/ S. C4 ~4 c  j) n
& P7 k! D+ l3 ^! ?* W: n. ^7 t. J
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)1 L/ [, s* v( X2 \; K
{. R) H# e6 J' H" d% ^# Q: \) y
#ifdef WIN32
9 L7 c  S8 v+ U, t/ F    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);+ [: A& L, ~" W" x) R
#else 3 j$ ]4 f1 H/ x. F8 w' E" u
    size_t result;
& D/ b1 U2 Z; Q7 d    iconv_t env;
( }# v1 ]; g* p+ O' W: [% ^7 K    env = iconv_open("WCHAR_T",code_page);0 `+ p1 |% h2 \) @* ?
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
+ n+ {% \; q' x- p, u' L, b    iconv_close(env);2 [# _# M$ @1 A  g4 T7 {% Z
    return (int) result;
* V5 `! D$ t; V! h. w
5 e5 N$ H  r, S3 |#endif   
5 _4 \( v+ ~) X( z8 y$ m% i}
& i4 h, l2 x, M: N$ ?& C& D
, ^& L! W0 h$ |  G6 N; T3 N3 sint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)& ]& E) y" k$ _
{# P: A$ x; ~9 [% `+ a# K
    int len = in.length() + 1;; g1 K1 U- m* W0 F6 s0 U% m
    int result;, s& v3 i' L) M! d
    wchar_t* pBuffer = new wchar_t[len];
! |2 ^( V1 x0 Z0 j* s5 I! V    memset(pBuffer,0,len*sizeof(wchar_t));
2 P& p! P1 I8 G, o    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
. w& Q1 E5 ?8 l/ f) C1 D    if(pBuffer >= 0)
' X4 @# S1 I/ [2 k8 E    {0 M6 J( T, \/ U# ]2 I! J
        out = pBuffer;  C/ [5 [# f. h1 r& d
    }
# A$ l3 A. x# a/ X    else" S& k  D: o, b8 ]7 C  k( B, s4 g8 t
    {) F9 o+ r0 n" [8 X
        out.clear();2 M0 [! T( t5 c6 V( \3 ]! q, s+ d
    }
. k2 m& W4 N, _+ G1 m# G    delete[] pBuffer;& \9 b) \# W( r
    return result;
% W0 g* Y% d" `3 w}
* f8 y! i' h+ y* C, n7 S) F5 X2 W( `" \) A" f* N% I' B3 p3 |5 y5 r+ K
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
2 J* `2 \8 E- c, R{# Y4 v+ H8 Y2 G1 k& ~* h
#ifdef WIN32$ C% z  l% |/ S
    BOOL use_def_char;
9 d8 Q$ b, ?: K4 b- n. b    use_def_char = FALSE;  v/ m& Z' ^0 y& N2 Z
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
% _( n  Y" O- p8 C, d2 Q#else
) V# a$ g4 q4 G; L, O8 s( e6 |    size_t result;
& q7 i* q/ Z1 Z  c4 D3 _/ h) j    iconv_t env;
' p9 m& b' t  T3 G" ?9 F: Y0 H' @    env = iconv_open(code_page,"WCHAR_T");
* _0 q. j) p. y    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);2 H  I1 @/ I$ |6 }: Q; A, H: b
    iconv_close(env);
1 j4 Q9 ]+ ?# r+ i: K, h7 x    return (int) result;8 c8 ^  |' m' g( o3 p: F
#endif   
9 i# ]; ^& ?8 |}0 W! w+ |$ O1 Q0 W7 ~$ ^4 s

% S! V0 S* B4 xint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
  `9 Y- o* h8 T% [) d3 m! w{% S' a" t6 n8 ^" q+ S* f
    int len = in.length() + 1;  l0 F( s; y7 d, Q( X+ C' ?* s
    int result;& P; N# S) b. k% n1 u9 @
    char* pBuffer = new char[len*3];; [! e/ c1 H: k, E
    memset(pBuffer,0,len*3);6 e4 A/ [  N/ V
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
; t' _# R( X4 _* A    if(result >= 0)
. }* _! Q" a" |: \/ v    {  
; m  W& g8 L5 T, g' w7 `        out = pBuffer;
: Z; {1 s7 o% ]& V+ _8 k    }
8 P+ r- B6 r1 ^2 r: J    else
* E; k4 W, o& k  m( E0 _, P. ]    {7 N! \6 J5 m1 p0 f
        out = "";7 O3 o" Y9 I, [2 u  ~
    }
/ O/ [0 e3 Q: J    delete[] pBuffer;
; u8 X4 Z* P) m! S+ \# t/ g% ^    return result;
, ~# }' r) b" [* D" k( N}1 R4 l8 U% g; c/ P0 s8 q1 h( y
$ E& {# C" f4 \5 P/ c
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)) d; ~) _- L) t  C' T* p4 l$ r
{9 G$ r9 C8 [% e6 f
#ifdef WIN32
* Q/ H. D4 x! X; {8 w6 [" [9 W: r, |- l& {
    BOOL use_def_char;
0 I. o' ?- _/ f5 n    use_def_char = FALSE;# G: F4 j% P4 \5 r& k5 ?/ \. f3 \! U
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);; A. X) `' o. E/ }7 C8 @+ C6 B
#else
8 ]) u  v. h) D6 ]! h" d    size_t result;8 Z4 ]1 V4 q7 d
    iconv_t env;6 R; f! q4 n; B- |. M' i* g/ `

+ x) J) Y$ F0 o" |( s    env = iconv_open("UTF8","WCHAR_T");, s2 T: `3 B; l" ]. j! y
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     ! i- W/ G4 x" W) X$ \3 D
    iconv_close(env);
' r: M# K* ?4 C+ P/ I! ?9 O4 q    return (int) result;$ z1 O: ~9 z4 X3 k; V4 p0 q- L- V
#endif
6 N' \. z. C: _  B3 r% ?( j" \, C1 ^& }8 ]}, G1 d: @$ `% M0 b+ D
0 m) Y8 @9 }7 o2 G! j3 q* J$ g
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)' |3 N# p8 I3 D
{, }9 {) R+ G2 @: h
    int len = in.length() + 1;
; ^) o: o8 W/ m7 P1 s# E& i- I    int result;" `/ }8 A8 {# }2 C; V) d
    char* pBuffer = new char[len*3];2 P' f5 h$ I2 O0 e- o
    memset(pBuffer,0,len*3);              , m+ O3 z1 s: h+ E
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           " r& I& g' ~& Y7 o- ?
    if(result >= 0)) l$ Z$ g& [2 `. u$ h2 M3 L6 n
    {& O& q# u4 N& k- N  B5 u
        out = pBuffer;
8 l! y: x( W3 H    }
$ v4 R) V, m4 J. i* K! ?' i    else
0 z' f- }# Z9 r) z    {8 I+ v9 g. [9 D% G
        out = "";5 i3 c' Q' \! n: Z7 _$ S
    }* }' C* P) R* R) m8 l  m
    delete[] pBuffer;& F2 `/ {! h# y6 T2 e
    return result;
4 _0 v3 a- o' {! j) B4 J}7 n4 z: I& W2 I' ~& }! S( O

& x+ \) |1 G3 V1 Yint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
% G/ {; _; z) T( l: ^# R{
8 Z- Y* a4 g3 q8 }1 |* u#ifdef WIN32
8 M& `9 t; O. O$ ?' \$ O    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
. h# V9 z  g6 E2 f& n$ p7 Y; k9 ]- ~#else9 l' w1 N5 D& p9 X
    size_t result;; y8 t; q4 \: A  ?& {) K
    iconv_t env;
. G1 R9 M  e3 J5 D' s    env = iconv_open("WCHAR_T","UTF8");/ Q6 U  W9 i8 }1 {& o; Z0 t
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);% w3 x3 P/ q8 s; s9 i" r
    iconv_close(env);
3 s" v6 m* T4 _4 `* @) l    return (int) result;
+ t2 }# s/ [# n#endif. j# N6 _. r5 O# S
}
$ `1 ]9 @; g6 h* @; Y9 X: t
, f; f, U& S/ c5 W, e9 `int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
2 V7 C! x( \/ C* v- J! G7 d{' e  c1 n1 m( ]* k9 a
    int len = in.length() + 1;
6 p! S" N! K2 J( [9 N  s    int result;: n6 Q! X  R: _
    //wstring temp;
% E$ }7 w- J$ D- u9 n    wchar_t* pBuffer = new wchar_t[len];
# q1 F2 W7 \; l/ s5 K; @% |    memset(pBuffer,0,len*sizeof(wchar_t));
+ S1 M' U$ j! Z4 m- ~/ `    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));4 h( z6 ]2 o4 b  R& `5 _
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
+ _' Y6 H. u. z% l) K$ Z    if(result >= 0)2 m0 X! Q8 N7 e' K" X2 w
    {5 v' l5 V( l1 ?6 q6 L0 L4 n
        out = pBuffer;
! q9 g/ N" \( Y' d! l, p6 j$ R* [    }
- z. ^2 W) l& o4 v4 J: c0 X5 ?    else
% D/ N6 d6 \( _" D$ E- [    {
) b) {* J% P+ y4 ?/ v        out.clear();      " N! A# B; d4 {+ y) M' z: ~" ^$ Z
    }* P5 G# k5 j1 K$ I! v
    delete[] pBuffer;( D( `( o+ V( S- f$ i
    return result;
% v) y: h* U- n% [1 E% l}
1 ]& f  t4 m: t3 x2 M4 n! ~" ~% _! V- i/ A$ z
/**
( O5 M9 F1 y4 |" g5 y*@file   % K, F0 r$ C$ F( o. Z9 w) {
*@author Jimmy
, }' L5 i* Q8 s) @6 r( a9 q*@date   2007.1.16% Q5 }) q6 y' R0 B' P& y+ d
*/
! T8 f6 a9 m& J& D- y) r6 F#ifndef _UTF8CONV_H_# D- ?) q3 ]8 P% k1 r$ X
#define _UTF8CONV_H_$ V: v% m0 _0 p' ]7 b8 x, q
5 X7 C" x6 X$ u
6 c# n1 B9 ~0 D! B
#ifdef WIN329 W8 d6 c" e" s' a5 P4 R& j5 x
#include <windows.h>8 _7 G) B2 J: x& }4 A. M  U$ m
#include <winnls.h>
) J: g5 v$ r. v/ y( _0 H#else
  g1 Q7 q; A. G#include <stdio.h>; O- X7 G& ]+ W
#include <iconv.h>
8 I" k  F: t! }/ S- _#endif
$ Q: o+ D1 }2 H: O8 l5 i  E% B: |' M# I( J& {0 [4 K5 ^
#include<string>
. j" l/ T8 _% Y
) B; L0 @* c4 c0 ^. F
( p9 j- P9 M! L( z# T. T4 i7 H! \class UTF8Conv
+ }7 y- J+ S6 v6 j( I {6 }+ d6 P8 I4 N/ a
public:% G" i$ N, D4 a& _, c5 w+ T
    static  int codepage(const char* code_page);
8 `3 n& Z; \6 n* D) t% `. y: @1 V/ ?: J, K
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;9 v0 I' w/ e" x4 F, |6 }

- f! d9 t& `6 \; F! G/ S9 y    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
9 k# x+ K) \/ ?, j- S- _! R! d' v6 u- y' v9 g7 L! Q) e
    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;4 X8 f3 z2 l6 L7 Y4 Y( P- F

0 j2 d) {; B& E- x( }( F% @5 H    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;7 |2 P5 ~4 S4 b+ o5 M, P3 e/ H
5 W, Q7 J( y1 W6 M
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);( a; n* I( b7 R- `# s: V0 w
' }! l1 I/ O! h& f2 f6 I8 E
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
+ X: S4 L/ ]( V$ B" @% t
. c2 B8 V4 @) [    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);- z1 a/ S" j+ o
+ g; o3 g0 r7 u/ f8 A) u
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
8 U' z( G. M# }* q. M};) S" ^1 R9 l  l0 G% \% [5 y. d
8 I% x8 l8 J) ?2 b7 V  g# K

1 f7 Q8 r3 f6 Y0 @" |0 y, u1 X  `$ ?: q/ U0 Z, q* {5 _0 w

1 j) w+ c) E4 H+ a2 v( m
  y1 i2 ]6 D& B: g  f% Z, D
& f* G: z" P% F- S# w! A: ^# o' O8 a: f9 I4 Q. ^- \7 @
& u' s$ e1 W1 c

- h  l. I4 Y# c8 l2 }! z2 ?: b) Z7 v6 E6 d. Y

% P1 q. o- W/ ], Y+ t$ T- d, b% I, V) m0 K/ @& X
9 f" E7 R+ v/ D" ?
6 N% I5 x, x( J* |6 ^4 T) ]& m
% {1 Y% `/ v9 B6 j" D
8 t! o5 W% Y* {0 m, k+ F
+ ~7 R" b2 h$ k! D

8 j; _5 }0 K9 }- a
- z' M& b' w  R1 Z) P5 @4 s# e" s
6 O0 ~- \1 }+ A
' |  d, s% R: l$ f" E
1 s/ Y& P" T- \( \" N, _+ P5 T! B# t+ ^5 Z1 U1 t; d1 i# M

; z3 I/ e% e9 K& [+ Y8 U
; B  K2 i3 R. ^3 \- f1 z4 ~: B$ v8 Y
1 X2 |; P/ }3 c% E" q

. O: k+ ^; Z6 H5 b* B
% k4 E& ?& ^0 O( j* n( x& Y* G- L#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
5 [7 s  u! |& `& o, W这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
) B$ L* R' o& U8 z; c( I' u( G3 l但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
/ R* ^# \6 p/ a* u; V# {
- k, y8 z6 q* wand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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