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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
* A; e5 ?( a$ f' ~
$ A" X0 L% m- b# s灌个水吧...' Q4 v2 {4 d6 p# _3 V! P# j! q
/**/ P& h4 [9 i% M2 l" d2 ?5 z, @0 U
*@file   
  H9 Z# w; Y0 A6 X$ I*@author Jimmy* m: T$ a/ }  }/ B
*@date   2007.1.16" f4 i9 e. O$ o( V* C2 n  G/ M! k
*/
; f; M+ y" ^1 Q) x' N#include "utf8conv.h"
# w$ L3 ]- r" B: w/ D4 D. f6 Q  x5 J0 {

/ z2 F$ ]4 w) u
  c9 I) O' g) X# B" Z$ mint UTF8Conv::codepage(const char* code_page)8 S" q$ R( L5 n% K* i4 c9 A4 H+ ?
{    3 d6 B3 a, D) K3 p- d4 B
#ifdef WIN32
6 a- K) g5 h9 ?) s6 |    if(code_page)1 y/ W' ]4 e$ R
    {         7 z; {, M) n. o) y% J  o9 F: e# c
        return GetACP();//既竚箇砞
7 Q9 x( M+ I, P, t% j. F4 L) `    }      
7 j8 A% p. @9 ^  b$ r' N#endif0 t) b7 q6 p% m
    return 950 ;//taiwan acp$ R$ B( J( K# s' M9 _
}/ l$ d: t3 l$ J( c

+ r- r: b: B" m7 R' a, T/ ^# b- r% o
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
, M6 V, K& |$ X{" T9 Q1 X) V: y: E$ U- y
#ifdef WIN32
" E& ]- [- K- z& M, i1 ?    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
% Q# C7 u: y& L; V+ T3 U# b#else
4 o# Z  E# l' E, O7 r. {    size_t result;
- O# m* Z  S, B    iconv_t env;
7 J, [, N+ X# [" L9 N1 Z    env = iconv_open("WCHAR_T",code_page);' h. E$ ]) |# r0 n2 Y* o
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
0 i" j" S( z  G( b: W  s9 H    iconv_close(env);8 j6 A6 @' z0 k% Z
    return (int) result;3 [( t: d* Q  P4 u; p0 _
+ ?, u# c+ a) R3 T
#endif   
- ^( k& e- n; M4 y! o}
5 L- Y! l3 O# J" S' H) H" L) s: D# X! a/ t2 ~: [- A7 F2 x
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)& S+ O( D: n5 J# }4 i1 d! J
{
0 {! w4 w/ f% _# i# ?$ n    int len = in.length() + 1;+ W5 a: ?+ W& y9 z3 N
    int result;6 K0 W: R% \  z& L
    wchar_t* pBuffer = new wchar_t[len];% ^, s8 l% w( A1 y! j
    memset(pBuffer,0,len*sizeof(wchar_t));+ Y3 g0 i; [" X8 Z8 @! \$ a
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
1 b1 A* p3 B( B, G    if(pBuffer >= 0)
2 S/ F2 a2 q* ^6 N0 a    {4 l- F" M  ?/ C) b+ H" x* \; J
        out = pBuffer;
8 Z1 [- }6 \3 J' f6 g% L7 g    }, p6 @% I! x& m0 T4 Q3 t
    else; o" u5 B5 C  e* ]3 U
    {
7 T. s$ t" y3 Q$ _( v' @# x; q        out.clear();
. [: f; m, b- y2 ?    }' t" K( b  o3 [0 j; }/ t- ]4 J
    delete[] pBuffer;
7 ~, U* }' m8 d. d6 c& ]+ \    return result;
! }# h  d6 Z( U- ~* [' v8 l}
9 A8 ?' L1 `+ u7 \1 V. Z! n. M/ h0 T2 a
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)" D" J+ x) }  b2 S% W
{7 c: I9 ?+ F8 y' ?7 [7 z8 r
#ifdef WIN32
" P( r9 [6 V, V; D    BOOL use_def_char;- B3 J, g  t& }- A1 r5 J
    use_def_char = FALSE;
4 o; j4 o$ o2 P! F. j6 P$ f    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);$ N! g. ?0 E2 T* ^+ i$ [, j
#else
! s! [' d" j" N$ p- v9 c    size_t result;6 [; A8 ~: n0 C: O, u
    iconv_t env;2 K+ c2 S" w% R: Y8 P
    env = iconv_open(code_page,"WCHAR_T");( a0 k) a* N/ z9 h
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
0 e( r* D! }0 F4 M  K3 [* _6 F    iconv_close(env);
& O. k9 N. d4 _    return (int) result;
! B9 G9 Q% |) `$ g#endif   5 v/ m* B6 m  [
}/ P6 l3 k& \- j9 H% E2 F7 a

& S* [5 y, E% e1 h5 [1 O8 A+ Qint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)5 D% E  A4 n5 k4 O
{8 {; S5 I, y( f+ Q( p
    int len = in.length() + 1;$ t& T, G! K2 U, j( D8 [
    int result;" ~4 y! y" f. t" W& v9 z$ e7 I" p
    char* pBuffer = new char[len*3];: q1 _2 l& H" j+ v+ y1 S
    memset(pBuffer,0,len*3);, Z) {$ t% W. ]  C
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
3 U9 G9 V9 E; G( e    if(result >= 0)/ S8 m6 i" u2 ]( t& ]; J5 n1 b
    {  
* N1 [( R6 r* U2 @$ x2 f9 {        out = pBuffer;/ }: u6 Y7 l! H3 E) g! E
    }6 b- ^" g! K7 m
    else
$ G% @4 I! _5 w3 C4 ^1 k/ x    {% J& i) b& B8 `" v
        out = "";1 }+ y2 n+ Y7 {$ R1 h) N6 Y
    }1 h" o- |: v3 l" ]2 b
    delete[] pBuffer;" L/ O# Y& R1 S$ k* t, C
    return result;7 ^! D# s( R) A0 F4 O- l+ m0 o2 |
}' y5 p! T9 Y0 h% K2 }0 X2 L
: B% v" z8 o# O
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max): {# W4 z3 o1 B) C, L" N
{
3 D, i5 o2 Y( ]( `, T: G5 M#ifdef WIN32
. l# w0 n3 M4 d2 k: {  g! g$ K$ ?5 M- L9 _6 F( y4 M: U/ Z+ {
    BOOL use_def_char;
, f( r  Z1 b# A    use_def_char = FALSE;
& [0 q1 C0 ~! \. p    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
3 ?' }  D/ g8 x- i#else
1 e7 E7 i5 H& d8 v$ [4 P    size_t result;' Y3 Y' ]8 ^- C1 X! n
    iconv_t env;8 v) ^, Y9 ]" k( g# u
: h' a+ S$ `+ O! t2 t
    env = iconv_open("UTF8","WCHAR_T");- I8 X0 j5 H+ r
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     . p  @# L* e; V( F, K+ k6 H- F6 O
    iconv_close(env);
5 j/ M8 C2 A6 [0 m' D    return (int) result;4 d; T" a) ~  e2 o" T2 [, x1 V2 p8 q
#endif
; ?+ D8 t2 b( A& P8 j% v}
6 h! }) C( U; l& t# O2 j6 t
! @; F1 W1 e* b5 f; L) @) \int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
1 x, J! m2 V6 }- C7 v3 u8 }) W{2 A1 T8 Z: y2 [2 l  X: d
    int len = in.length() + 1;
$ T' b2 h& K: W0 \    int result;6 v( g6 E) K8 s0 i' b' d! Q/ j5 Q
    char* pBuffer = new char[len*3];5 H7 _( V8 n6 }' D2 H( z5 s! D. t
    memset(pBuffer,0,len*3);              4 ?7 K: G  K2 j% S" O& s  Y2 f
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           & m. Z+ {' L0 U7 L6 s. d
    if(result >= 0)
( D# r' R* N9 s9 D    {; C. L/ I9 q5 ~/ w( o, h. W* G
        out = pBuffer;
2 y$ }" ~% W) i# l% J    }' r  L- Z( U5 m# `; H7 k9 q5 F
    else
* a# F3 q& O( \$ |8 N- R$ W; L    {
+ R% P) W8 e( ~        out = "";
  B6 n7 }2 b2 i: l% T6 O. v9 r    }
3 ^" B, I; l: s6 i9 l, l    delete[] pBuffer;
5 g8 [& `+ O5 Z9 h3 A' r' e; f    return result;
. R+ z% X0 M! Q9 B4 u9 T" F}% ~. Y* o9 j% b8 S% S
" w- c* i+ b, [. ?' v
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)2 b: U9 @2 n6 ?" @4 N
{: @2 N1 ]1 K2 @* t7 {% e1 f. X
#ifdef WIN32
$ D. f4 o. a% @6 N5 T    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);3 Y! t. ^1 v0 o  x* D' l4 T
#else
9 q  W$ ]5 H; A' U) ?, h5 N    size_t result;/ S* E! B9 r8 P! r$ z
    iconv_t env;
8 u+ g% X- n) {4 {, F2 a$ F6 S    env = iconv_open("WCHAR_T","UTF8");9 [# i4 C+ g+ v" X; O
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
7 `3 s  C3 ?# B/ y# `) R% S    iconv_close(env);
6 b0 k8 \2 D4 o! }7 V1 j) l$ o    return (int) result;
, l) ]8 b: H! L% f0 e) ~#endif; c- k! ~5 r5 H- k# T- S4 x2 m* L1 K
}+ x6 a) E0 ^+ A% F3 h1 _: l- M4 _3 Z

$ e. `- a. q- l: A; l/ I3 Rint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
4 \9 C7 J- ~+ Q, `% A9 p3 l, X{! \/ u* c3 u$ P/ W4 ]; `2 X; G
    int len = in.length() + 1;. ]: c+ V: A$ x' ?4 A% f5 N4 C( P
    int result;. B7 K; D% d  p8 d  n0 N  b
    //wstring temp;
8 }" N7 l6 W5 _4 N7 h    wchar_t* pBuffer = new wchar_t[len];1 P! x) i2 L/ D% _
    memset(pBuffer,0,len*sizeof(wchar_t));
0 w  [: J) p8 {/ k! O/ Q    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
9 Y, |5 j0 s5 U4 Y9 b    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
2 a6 S  X: _$ z. U1 j( E& L" \    if(result >= 0)
% m5 S# [  g- @0 {    {& L* I0 W' d# s! m, v  j; Q) d9 Y
        out = pBuffer;5 H* O- S2 R2 d( b
    }
, h1 x$ Z! ?) Y# f6 |6 y, V    else
; C1 Z) l- M: u, {    {
) u- [% t! S( @6 S3 f8 R        out.clear();      6 \/ p* f. R' O+ z6 F
    }
# z8 A$ z. ~+ G4 C4 }    delete[] pBuffer;
) E! x7 J( T9 j4 ^7 q    return result;
; F/ }3 o% _  D}2 C3 n: x5 d3 N! J/ C. n

+ c" l/ p' C6 ]2 ]# Z6 F/**+ M& h4 I' H. `" r' w9 D/ b
*@file     ]$ ?, G, L7 R2 y5 E
*@author Jimmy
+ _$ O" r8 q( x. Q6 T( n*@date   2007.1.16
6 G! A; K7 @. t+ o" t( \2 q*/, c" C2 A- A) c: n
#ifndef _UTF8CONV_H_
3 T( A4 |' C& \8 S1 q7 N" z- z) @#define _UTF8CONV_H_
& I. I- k" g; Z1 A& R
1 R' o5 W! U, _2 a( ^; H6 ~
' e( y1 u: K0 i& D" n% b#ifdef WIN32  H5 U9 T' e; c3 T3 t+ C5 k
#include <windows.h>6 g4 k" s( e& P1 a: _  t
#include <winnls.h>% n; G, }# i/ y2 [2 Q
#else
- x( `% R) t' J& q. `4 l1 R#include <stdio.h>$ ~! ^3 J1 l4 H0 H/ ]4 N
#include <iconv.h>
! ^( `& X; S/ }, U6 u#endif% |4 H/ V$ X5 ?

; _) `0 v; n+ F; _$ F' \3 V: q#include<string>9 @  w$ `: y5 t% Z+ _5 S7 |
0 c. S/ S$ c0 H  @
# W3 E) {3 H+ X) V$ ?
class UTF8Conv2 a* L! D) c1 n+ Y
{: `! K3 @! X& k8 N1 a0 i5 V: A
public:  g. I6 t% e- j2 ^+ ~9 x) x8 ]
    static  int codepage(const char* code_page);! I7 e0 Z  W) X! l, q/ N$ Q
. a- j+ `+ T, _. D  a8 f
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
# g. r0 [9 p4 p6 U% y2 N, B9 J
4 S  a8 M  N9 H3 j& |& L    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
, a  u0 b, M; t+ G. A9 M; J
) [- Z+ n' H3 B" s$ [" `    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
; z  D6 U( g& a5 A  m
$ w( w4 s- i7 F  z# x% [    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
8 n- l/ W! I( B: C' |4 }! U; L' w
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
/ M: g4 x: G2 m( f7 ]; ~/ z  ~' n0 c
  B1 t/ K8 r$ e6 x- m4 f3 y' x    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
, c6 |9 J+ `8 I  S/ u' u% \# _* s; z
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);$ Y% @" c7 L! ]5 K5 r7 C' r
8 d) P& ^' _- r0 P
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
, ^2 M0 f. N" K& R};
1 r: y# u$ C  |/ Z9 a* V6 N, p6 S! C8 C8 b
# k" p0 P2 f5 z/ i0 d! @

5 A; z( y! {/ F$ p! E& }
! w& g) N7 ^% J4 Y4 A) Y2 e
3 Q. e  m2 q% {6 O* |5 U; M* T7 \; j& d$ J7 b! F

- I" |; m* e: c  e) V9 E) B2 B% O3 g0 K1 u7 b' w$ ~0 N

: i; s/ t* ?$ P. a: V! r' W/ r+ ~7 L6 ?: m0 p/ N" g* u

5 ^) M% U9 a* [8 t4 u5 ~; E
* [- \7 x$ G- w" r" T2 x
& I2 S& ]! S- i' W8 x( j; N1 c2 c/ Y2 q% X: L- N' ^

0 W" F4 |0 J+ G7 s( |, [2 _# L8 L  r6 }+ i# E% M3 R+ `" u8 S+ e
' j( J5 @# U3 p* O4 Q
  i: k. D0 D2 W! Y. R8 s. M
* R" ~, }& s6 }6 M, l" B

, u( i: Y- S5 r* e- J$ p$ e' a( C9 c2 C9 D; S

( Y( F  f$ F, e; J! z1 ^3 P( Z6 b
" [4 r+ Z. c) B( i- g9 p' k: c& O' {) g( c6 a$ N' z

+ |7 r) o5 v% y& K7 h
( X+ O1 U; K' x# Y7 U' A+ |! u5 G$ [% k

9 h+ d2 a; Q& S1 L: u! h, C' Y9 y! \2 q& y4 E" x
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
! ?2 j1 W1 S" i# E这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :* B) p6 @) R: v3 b
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
) W  q/ R( H7 M" M
, j! h* \2 j4 c$ Y) J, `2 oand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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