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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
2 X+ g/ E$ w, z% ^: x- U0 e* k: K9 H% B& J* w1 P
灌个水吧...
- r" w3 r; [. i& S, O/**0 b$ ?. k" d% C1 u) j$ n- y
*@file   
: d6 `4 c2 v8 a8 [/ M" P*@author Jimmy
5 D0 d/ A% {6 J7 X" W' c% g*@date   2007.1.16
. n8 \9 ?6 e9 P! c% h0 K) o*/
) {( f" X* l% u9 O#include "utf8conv.h"
7 d5 y$ G4 P3 P; m* h( r" m/ n, D7 N+ _

6 A6 \$ O+ C8 y- H0 e' s" Q: X  z# b5 z, K- q
int UTF8Conv::codepage(const char* code_page)9 s  Q' t( @% E2 |- P/ p  V; a
{   
$ S8 x! E8 {" a6 k4 ^: ]#ifdef WIN32
; m, ~% K- x" G5 X5 `, A  K    if(code_page)0 e' E7 N& R$ ]; v, f) p; L
    {         
5 e1 k3 Z# M. C8 X, t0 i9 A  b7 W        return GetACP();//既竚箇砞
, R: D# \0 J. n+ U7 |    }      * F0 u9 c- C( D" m- M9 E3 t& y
#endif2 ~( p' m4 o( o% M& {
    return 950 ;//taiwan acp4 z! M) \  W  m* G! ^9 r; i4 f
}7 E$ \  y3 k4 N) K3 a  ]0 m

$ m  |$ K' Z% X. N$ x
6 a9 b3 F+ n. f7 cint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max); C- G# {# |- h  Q- B2 b
{
0 C+ m. }7 v  g) L+ M#ifdef WIN32
0 v7 P2 o( X9 P4 g. M    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
  d0 n% @. ]0 t, R/ Y#else
& H: S) }$ r7 [% g    size_t result;6 s& `; `; t+ H+ X5 {$ m5 }
    iconv_t env;* A5 e: N0 b5 Y8 b5 d) \
    env = iconv_open("WCHAR_T",code_page);
/ N* ?' R' T1 e& o) B( R    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
( V$ I; f% c2 E5 H    iconv_close(env);+ G  x: Q1 @) ~1 M9 q; `- H5 h
    return (int) result;
  \$ F8 r, n3 v# `8 W! O- ~# ~5 |, \" K* c: r
#endif   
2 s1 l: a! K& ^& O}0 x. C& y) z: r) a  ~: o" f4 R

, p# x# I( a9 G  F6 E% _( U1 Fint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
# {% M0 t2 ~- _! X/ w( \$ s, J{
4 i. k, Y" V& p# x0 C    int len = in.length() + 1;' ~, ^3 q( B0 |
    int result;1 \5 r$ K2 y$ z( O; ?
    wchar_t* pBuffer = new wchar_t[len];
' i' @8 Y- j; c3 m/ {    memset(pBuffer,0,len*sizeof(wchar_t));
: F0 m6 L1 d6 [8 y    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
5 t& u( b4 p2 H3 x( o) ]8 ~2 a    if(pBuffer >= 0)4 X: f9 l' ^) `& i6 t; V3 I+ W6 p& I
    {" z: y; y) P2 z9 [; u! t
        out = pBuffer;
+ p7 P5 m4 \- Z3 g5 o& r    }, N  W/ J( y# e! Z; c
    else. Q( d/ P+ ^# P. B
    {
. `9 c6 V' w2 R        out.clear();& T# N8 v2 [' i4 l" n7 E& v: |' d9 A
    }. s7 O3 L% ?$ x, h
    delete[] pBuffer;: z# ]! d$ ]/ p& D, f" y
    return result;
% U! q6 W0 a- ^; p4 {}
3 P( }, M" f) G* _; w6 k0 Q1 p- J1 [0 ?. L- `; _, |
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
: l( l8 i- v$ h4 I+ [* ~" F+ q5 A{+ S! d- U2 P7 \
#ifdef WIN32
* T! A: {0 v/ |: S    BOOL use_def_char;
3 h# Z: M" [! I* [5 D    use_def_char = FALSE;
! q. j6 o) Z. U+ D* g) K+ q- ?    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);1 q% U- c, Z6 k4 g3 e; D
#else' _( L+ F+ I  k  z; S
    size_t result;5 j- h, x8 A: _$ [# |7 X! K
    iconv_t env;
9 ]4 y* H4 C2 T  W# X5 X    env = iconv_open(code_page,"WCHAR_T");5 _5 l8 I" @6 x6 r. Z
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);: }% m/ c1 V% C+ ~# A2 a: u) h
    iconv_close(env);( p# _" b5 h7 V$ Q. T- I
    return (int) result;, M9 S7 ~0 y5 N5 c0 s9 H2 P
#endif   
, U: X" C- [+ d! M, Y3 c8 e}
7 }: q( r1 q3 ~# X. {9 t! `  l% p4 g- }6 Z
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)5 z! t3 p; K$ Q( Z
{
; I% ~2 w  c/ g8 Y    int len = in.length() + 1;
% Q- }4 {9 o) o+ R6 q9 ]( Y& I    int result;2 _& N8 e: k/ i* v4 V* q
    char* pBuffer = new char[len*3];
1 R# p& H! Z; T    memset(pBuffer,0,len*3);
* H# t. b, c& |! N. z/ h    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);; n4 S& A% V! F* @8 k" x
    if(result >= 0)1 n9 e, B6 c0 l1 G
    {  
* e# n# x# V* i9 p        out = pBuffer;
! J. F) e  O8 A2 i! L    }6 H0 @7 m( h3 R; W# e. u
    else. n% @$ ?, K4 a. U, e5 x
    {% h6 M6 e8 ^9 I! \' c/ h7 E
        out = "";
4 B" g" f: `2 u! Q5 e    }
, x6 e6 @5 {9 r8 m, i  X+ Y    delete[] pBuffer;& ]& M7 z$ {0 u
    return result;" `$ W/ ?2 P( Y
}
" E  G/ I8 \# |3 \( U- }: y$ X
0 G7 z$ r( @# m# N0 |* kint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
7 h. [" n3 T4 h4 O{0 T7 A8 Y# }" \6 Z$ Z; A
#ifdef WIN32
* U* W* N, J. E' d! w, f" H6 s4 w# g) N& d4 A0 B+ h
    BOOL use_def_char;7 U: s' T) `' e! B9 Y$ A
    use_def_char = FALSE;
7 k2 ]6 w7 y2 S    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);* d3 y) O& H/ _6 r. y$ L9 i
#else
8 O/ y% R( W: h    size_t result;7 S8 y% u+ D* ~. E
    iconv_t env;
9 Y3 N- O! Q9 K6 Z1 B7 M3 T( C
% A. E/ ?, `! d    env = iconv_open("UTF8","WCHAR_T");0 D- ?$ M. Q$ d3 A/ y- s
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
* L4 r4 J+ q) a4 {3 T$ T    iconv_close(env);8 ?) `+ E* m- l+ `, B
    return (int) result;7 i" u8 {5 V3 T, V1 P
#endif4 K! w* v9 Q' }' l% o8 c1 R
}& K1 T! a$ b$ s* C7 J$ z: G
2 R. h( d5 T6 z
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
. d/ C3 S( e, \8 x: r% B: f# k4 g{9 \" \5 I, x: n/ f
    int len = in.length() + 1;
9 w! S6 S. B8 A3 i: p9 A: W7 P& |' u    int result;
# s1 B2 S9 x+ v& i    char* pBuffer = new char[len*3];: S8 W  P( ~8 a6 J
    memset(pBuffer,0,len*3);              
) f& W3 q& ^0 f3 ~    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
2 _: a" r1 @4 q% u* N  b$ G    if(result >= 0)
( @& z) V& q5 u9 {( }    {
% {. a" r- ~0 F- F1 Y9 u        out = pBuffer;0 s8 G) R/ P- Z" d# K
    }! v6 V5 o$ \- m
    else9 x9 Z( j1 d/ x+ ?( n
    {, A, x5 g1 _  O
        out = "";
2 f7 ^. Y# r9 |! E  p1 r0 E; E: R+ g    }
$ ~3 h* b) @$ S/ s; n6 c' e    delete[] pBuffer;8 l6 Z& V" _. }: V6 L1 I! C4 x9 D
    return result;
1 `5 D9 n$ {# t* `}
, B" B9 }. x' ~6 s2 |
7 r7 L4 O0 q7 {. v) Q$ ~int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)+ G  p  w% H) h$ V4 T3 O
{
2 i. g, D6 P, r) l8 r: V#ifdef WIN32$ v# i; M' O- F# I- R! Y
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
& S1 B4 e. E$ F#else- O$ m# R1 e0 B  W7 P
    size_t result;0 I5 X  v* H5 y/ a6 h
    iconv_t env;
# M1 U+ y5 e( p2 I) k! P8 D    env = iconv_open("WCHAR_T","UTF8");3 K8 H/ q- k1 C
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
: m8 E2 |2 e4 N) ^    iconv_close(env);
; u& s! r3 Q6 [9 A. d* y( X. Y    return (int) result;
, m1 p( L6 k0 M  B  z#endif
$ d! {! Q" Z$ S}/ [" A: y5 z9 ~5 d1 o' O7 N

+ d2 t7 P  y, E" P1 G) Gint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
1 c" K2 y- c/ A: c{2 h( d7 H5 L! k" |2 i8 ^
    int len = in.length() + 1;
2 |8 l. Y" l9 ]$ T+ [" F# @! W    int result;
3 ]" L9 S* `8 M9 ~' }8 i1 s    //wstring temp;- U" o$ a; q) T/ k. K- g
    wchar_t* pBuffer = new wchar_t[len];
; h$ ~+ G% l3 H; h    memset(pBuffer,0,len*sizeof(wchar_t));
" Q& r' ^# Z: I, B    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));- W$ w1 N  Z, D- Y/ Z9 H
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
  v/ n8 \- O# V9 m/ j    if(result >= 0)
$ C0 `5 M( P2 ~) [" L    {" J1 E4 q7 V/ p; h) u
        out = pBuffer;; z, ?" x$ D- B# d" v4 b3 f7 A
    }
0 w( u7 c# O  Y9 `! f9 ^* t3 |0 `    else8 Z" ~  Y: m% E0 ?! q. z# ^! F, S
    {: B  r) h& Q+ E. X+ |
        out.clear();      
6 {+ u6 g  P9 V4 V3 w2 C    }
: P; l5 ^: V: f0 V8 H    delete[] pBuffer;# f7 T) W* K1 C4 u9 p
    return result;
) ~2 l+ `* e0 f7 S3 ?. d}
/ c' v3 v' u$ b9 t* j
7 R$ Y# f- {7 w, o0 ^/ b+ f/**2 B! {( r$ F1 H+ p
*@file   
# t% c) a4 S" e5 V3 u% ]*@author Jimmy8 |# o) e/ ?7 w/ d
*@date   2007.1.16
: A4 X! b* w- @. s; ^) Q*/
, O) A7 k+ z7 J#ifndef _UTF8CONV_H_8 ^2 q' X# u+ y& R, z' ~: U0 ~
#define _UTF8CONV_H_
; `* w6 C' g- q6 Z! f! b( `& E3 g8 P* p% |' B! x

# k+ ^7 p) m% z  U8 H3 x#ifdef WIN32& f( A0 _) G, q' y& I. v
#include <windows.h>
; e/ p# t5 X* O* I# i9 X#include <winnls.h>* ]1 `: f- K" p) d; \4 h  \; X  m/ e
#else$ {1 ]9 R  d' `' _- p9 t1 T
#include <stdio.h>
: r! s$ J9 ^8 U& h8 E. A#include <iconv.h>- T; n3 t  m1 b2 b( t/ s
#endif
9 {- n6 s  j6 P( w
: Z' b" g& h$ y# Q- I: Z#include<string>2 T! b1 i+ S- A1 O

; n3 {% X) }- R6 Q9 s- `8 H0 F1 h+ W# ?
class UTF8Conv* Z3 O. K7 s5 y8 W9 a
{: \+ u# j2 b6 w4 X
public:. Q* j, ?# p: G% S0 Z. K/ ]5 F
    static  int codepage(const char* code_page);
9 O  i; ~* }7 @
/ d) Z. u9 R# ^5 C" G' C% l    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;/ e8 p6 i- ]# ~% l

3 E: H5 n# [4 F4 ^- a+ k    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
( o, \8 `/ G/ E3 E5 ^, B7 q" Q
1 Y, z0 }  E! o- K- O2 `    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
% p8 Y. Z0 Y1 u) J; h' P7 P
0 O: g" _* i' g1 D+ _: z, g    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;( Z0 i2 B0 u* M5 i
1 D3 a: ]; `6 k. O
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);$ @! e# X2 z) D- J

7 ]" t% c- m8 d, w& t6 K    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);% a" Y+ w7 k2 U. R5 X, E5 P2 d

. G* h* R0 o, x& H7 R6 c, i    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
# X. n- u, o  [
- m, u' ~. S% k" t    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
$ x, ^" v2 q- U4 s5 I};
  f# {) }+ Q  \4 d" f* |: i" _
1 [6 F; \2 r; i* }1 H& H$ E9 l/ u2 o
* L& d& H& v! ]' l% I
, m# ?4 S. b1 G% q8 o8 }7 U

: D' U7 u5 J  l5 d# C! E: J* Z% {, l* ]9 e
. U) G: I: O: I2 |
  p( g% D1 _+ J+ T$ ?
1 {1 O. ~5 [/ a- q/ y7 @4 Z& p& X

! @: d$ |# D5 M- G) _- G1 \% l& p! @3 T7 G. s, k
0 z: ~, M, ]6 Y
, {5 ~8 |) r. N4 ^/ u

. ^9 l" a7 N: T" Q8 {" `3 M; {: g! A' d/ c3 n/ |3 n
+ m( @1 @! x# c4 N! ?- U5 w
- ?( x, `, K3 J0 u* z
+ p: J* L% R4 r* Y6 Q
+ a/ z  ?0 E4 i8 }- e/ R! i+ ?

/ r9 a3 p. r, x3 m' |% I; i! `: S6 \9 U

2 U' B) n% s. F# |2 {! v6 E+ G
* U/ h* e5 G9 ]. Q6 c$ J  b
- z& e) R9 i/ R2 ]  q* Y0 a
* D% A; T4 n: E* o' |0 k  D
4 N2 j+ I- e- B/ z
: U$ p8 J4 a" h9 K+ Y$ a
+ P" ^* C8 K- e3 B3 i/ N! w2 b" {$ a# u4 |; S
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了 ) {: X7 J( d- G* l
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
: C' _+ b  E4 X: s/ Q! I4 ?, a但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~' P. G+ I  P( ^: S

1 S6 h) s* }; ]2 m( y' f5 Y7 uand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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