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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~& ^7 x$ a5 E! ]! W" y
4 s. e4 |/ Y  o; a; Z% J2 `8 }
灌个水吧...
. X; I* d( ~& i7 [/**
6 b* c( j6 R1 r1 g! H% z*@file   
& K; r3 q& v2 [) v) Z$ E$ Z4 V*@author Jimmy
- {% C) h2 I/ {. B) R- a*@date   2007.1.167 ^* l+ K2 C  t7 T2 H: n: y
*/- Y/ W, d* B1 F% x4 v$ ^
#include "utf8conv.h"
$ |; f" l  K) |& A* F9 z5 V4 u$ a5 k7 h: s$ T$ a+ m$ `5 }
, B0 j  K, k; ?, \9 e* P4 W

: B8 P# M4 L& G* x0 J: T, k+ Dint UTF8Conv::codepage(const char* code_page)
+ A5 N+ Q& H9 w. t{   
$ S; k: y" T2 a: y- C6 e#ifdef WIN32
, k5 m; n# c7 X5 W2 Z* t' c1 q+ r    if(code_page)
: p7 t" M" i* H5 U. v) P    {         & H  b* n% w: l6 S& i
        return GetACP();//既竚箇砞% |$ Y3 l: ~/ \
    }      
! }6 i5 n, |9 N- J& f$ W9 y( v1 d6 `#endif0 e* B. p8 p4 J8 r& q
    return 950 ;//taiwan acp, q1 n4 Y9 h0 K7 G5 R4 u+ ]3 K
}" ?* _" D$ |6 c% V* S* @

) W% q6 `5 v2 S1 |; ]* {0 }3 a. b) J. y# Q& s. o( @
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)0 H7 x- J, z+ W! n. i4 E- F
{' ]( X9 U, |" E3 d# M
#ifdef WIN32, M1 Y3 [9 `* M! c2 O
    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
8 v- V! A# L0 y$ B7 k#else 4 ~$ U7 j8 f- r9 Q0 C: _
    size_t result;
8 n. g6 A4 }. F    iconv_t env;
. J% g9 F+ I" ?, K4 k5 o2 F    env = iconv_open("WCHAR_T",code_page);
- p; j7 D3 {, v3 R6 ~& r- c* x- X0 V- B    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);" {; J1 p( k+ W, Q
    iconv_close(env);+ s- e, `: [: Y8 S, H3 Z# L: M! m+ r
    return (int) result;% q, e$ q. v9 K: [" Z. ]9 \( i- H

* [- g2 U* j2 e7 s# b) h- _#endif   
( r0 m6 D8 s8 k; `, N}) V/ \; Y3 z% b. Z5 _( m
1 V$ M$ u' v- y8 R) v, s
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
! k5 \( g& M! K' o{3 c9 t; b3 g% t5 i6 z3 c3 E. o
    int len = in.length() + 1;
6 }! C9 l' k$ N3 z1 D    int result;
! x$ m' {' ?, G' y4 Z# `    wchar_t* pBuffer = new wchar_t[len];( I  P' ]. Q) C- m7 j
    memset(pBuffer,0,len*sizeof(wchar_t));/ F- h6 S6 V8 z. ]8 x, u4 k3 o# f
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));1 w; t/ ?* x6 d- w
    if(pBuffer >= 0)  M. y4 L; d8 ^1 N4 d7 |+ y
    {+ f( H4 e& _! e7 N
        out = pBuffer;
( y4 W# s/ }5 o0 }& t: X+ P; X! s/ @/ v    }6 w1 l" ^3 x& l
    else" P) u0 A; D9 p% c( O. E
    {, L. P( h- A! P# b, @. Y) F: d) S! ?! @
        out.clear();
0 a; d& B. o" R: U  h    }
% A/ s/ m+ w7 t$ v! F5 n    delete[] pBuffer;6 S( {' c" p2 \3 z' ?: u' P) \# I
    return result;
8 V9 ~# e' [4 I9 j% b2 L! ~}
! `! P3 g  N- `; m2 D5 t/ M! y2 }! Z, U/ X; h/ I
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)! w$ w' W4 W5 q& I$ q  p! O
{$ e. r' f2 H+ H  q: c
#ifdef WIN326 M: U! T" d: l* O; z# L: |6 p
    BOOL use_def_char;
  f$ j" e0 }" U" S) }! ]    use_def_char = FALSE;( K" \* ?; x( a$ i
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);0 a4 O. B4 r9 r* `- t* z5 U/ q
#else
. ?4 a3 h! i6 Q" T    size_t result;6 ]! E8 `( P$ @/ e; w) h
    iconv_t env;; Z1 e2 F1 o1 o7 ?8 @: y
    env = iconv_open(code_page,"WCHAR_T");, v. G. T' ?1 s- }# I0 {, o/ ~
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);) Q' r7 p* `1 n5 g2 n: W
    iconv_close(env);- O6 T  `4 Y9 E/ X
    return (int) result;
3 o! [: M- g6 m8 j7 d% d7 [#endif   
; s& E1 o; D3 _* F" R& K}
" |* h9 h  y+ ]
: V% R$ \; c) E5 R6 Lint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)9 q( E2 o" B6 S. B1 x$ B
{
* i% z- Y3 g) }0 |. {3 r. Z+ O- Q/ ?    int len = in.length() + 1;
8 y6 R9 a( D6 X1 X1 G. J    int result;
% O& h; a/ ~- Q1 c5 r4 g    char* pBuffer = new char[len*3];6 {6 r) A: O: W3 k7 A% x% T4 s" H) Y
    memset(pBuffer,0,len*3);" l$ B& s6 A, t( R1 x, r. _* p
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
7 @) H0 F' k5 I/ z% u: z    if(result >= 0)
9 K3 S+ g) d+ s9 j! y( d    {  * W  N! q" I) C- Z4 W) h8 X( ?) E: l
        out = pBuffer;3 `3 i; d6 a3 [) m3 b
    }
7 [# m7 B9 v7 q2 l2 e" W0 N' Z$ @  J    else4 x/ u# N: U! t- q0 {% N
    {
, ]0 c% Q' G& B5 |# ~+ x        out = "";
2 m' X4 ?! [( G: {5 u1 N/ y    }
( R% A8 f: g( k- t7 z5 B    delete[] pBuffer;
* q3 S$ A$ _) P/ ^" _    return result;
: e" k- v3 ~# c5 ]3 ^/ q4 M2 {+ ^}
% J' m( U7 {% N3 {/ U! j
) ]! _1 T1 T, ^int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
% Y4 }5 B1 [1 S/ g+ w& V{" G3 O! P( R8 _. C! J0 L2 _  H* i
#ifdef WIN323 g5 V9 `) K5 @2 L1 @' v; Q4 j

; ?* n8 M* R. o0 |- j% J5 q    BOOL use_def_char;$ w- L6 |# R2 c2 e4 @# T6 L) e3 j
    use_def_char = FALSE;* N3 M! ~* O" R; a' D$ b2 X
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);0 @8 L+ R! n2 S7 d  ]5 |4 w
#else0 W* p+ V% }  w
    size_t result;
" q) u2 ?/ K. [* {, u    iconv_t env;
7 Y0 l- m: C! s9 K' v1 i- V: G( R# k0 i
    env = iconv_open("UTF8","WCHAR_T");; r" ]( l: a) ?
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     . F) A2 |8 T5 Z) w3 w' P4 d
    iconv_close(env);, \, e1 W% p0 x6 Y. ?" M/ k
    return (int) result;
# @/ Q% P5 R8 k# M#endif
8 w: ]/ m9 m5 T8 v}
" y+ l: \4 g/ e1 S
2 ~4 T! }5 \1 jint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
4 K# n( K) x0 `8 I: q- k- \: [{
4 ]: L1 T1 V/ I; D5 u' g5 N    int len = in.length() + 1;
  h6 H+ D  T. g) M/ m# |$ h9 S6 s    int result;' @; Z$ t+ ?* n' D
    char* pBuffer = new char[len*3];. Z: N& m# o7 c0 D# ?) B  p5 d
    memset(pBuffer,0,len*3);              % M- X- G6 w7 b4 q: t( u
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
9 D8 T+ {+ \/ s( K# a/ U+ R/ A    if(result >= 0)
# k/ C: V# |* a7 |8 E6 K& D% k    {9 s/ q9 W) e% T$ J+ X$ z
        out = pBuffer;; z( O! {  e; I' {! \2 a, _1 q. B
    }$ ]! \" q0 {  B# q: K. x1 n
    else
$ ~3 L, M, j/ w: X2 U    {* C6 {0 a. {# l
        out = "";- _) {) e0 M% H" @' U$ L
    }( p; h) G* k- E5 e
    delete[] pBuffer;2 h* Z) _% p5 M+ V
    return result;+ c3 h" G( ^! B2 {1 ?' s
}
) O3 z7 v& T+ _* Q) ^, y# I0 q, x1 J
5 A+ z6 Y& n6 }* Oint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
' u8 h% R9 |% i{
* t/ Y+ f5 O# A#ifdef WIN32
! |4 V& S8 Q) i2 U& m+ x" s    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
( F) l* N% |  V( c  Z) |7 g' T#else
5 \9 J/ c' U' R  ]    size_t result;
/ ]  O( E# _$ g& x+ ]4 O    iconv_t env;
# v- W) E4 I1 I+ B7 X1 l1 |    env = iconv_open("WCHAR_T","UTF8");
6 f, m2 Z9 a& Q: W    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);# m" {& G3 {. F4 w- i
    iconv_close(env);
) v$ |( o" g5 q8 |& b4 b! B' O    return (int) result;3 f* d" N9 t9 e( W7 M9 z5 w( w
#endif
; r( w/ v0 x# y& S% ~( n+ O! z* `}
: m" [/ S3 s, O1 d3 {  X
! Q, @9 y' N- f' D4 ~. D5 Nint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
& V3 _3 }$ k7 h9 `{
& ]* n4 b% F& [    int len = in.length() + 1;" U" z+ ~. h9 K0 q& K
    int result;
/ o' \  e% P3 e" @5 ?" n, j+ x    //wstring temp;' r1 S" Q7 n; E
    wchar_t* pBuffer = new wchar_t[len];
6 m% a9 a& ~0 C    memset(pBuffer,0,len*sizeof(wchar_t));& N- P  i/ Y7 c" P
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));$ E# N" v# o6 ?/ K! H: T
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
& \! x# q* c% }; u& s) A9 E    if(result >= 0)
; V( y) `$ g/ \6 `; g& y4 [6 |    {7 i% N8 B# X+ K
        out = pBuffer;+ d% \: i0 n5 \- f; V+ S& r
    }9 u. q; e: C: K  U% p
    else
5 `2 x3 H% S( {- Q5 B1 r1 b    {: M1 D+ I* A/ y6 V
        out.clear();      / }+ }  q( Y, C
    }
* q9 n7 S1 K5 s1 r5 N# T- o" n    delete[] pBuffer;; d+ B6 O; S6 g
    return result;1 j& A! r( g' d) y1 `' b& e( P7 V
}6 ~& r3 k# m5 d; C% a: u

+ n: F& e$ C( n$ C7 C' J: C/**
, C2 u# h; x: i1 l*@file   7 o' ?) f3 M- i4 ~2 K8 P5 @
*@author Jimmy% Y) G6 \0 a" K' P( w1 `0 X
*@date   2007.1.168 [) [: N7 b! ~
*/
% H' C2 s8 x0 f% {8 g0 O  q#ifndef _UTF8CONV_H_0 M/ f1 o+ U7 Z  f9 S- [$ `' \% L
#define _UTF8CONV_H_0 C5 x4 F2 U  D

2 }( D4 u7 }: z  ~! v8 D" x2 A5 Q* j' U. D8 C
#ifdef WIN32
/ k6 }% P0 l- y' V#include <windows.h>% L0 |6 J2 u) ~6 I  ]: M: ^
#include <winnls.h># N8 o7 {+ Q7 M1 l) \
#else
4 f; L! Y+ ~* x  l) v#include <stdio.h>
# J( G% Y: ~- g5 I#include <iconv.h>3 L- E2 V/ |) m6 E- y% I4 ^" W
#endif$ n$ ^0 u* V' y$ S
* K" T* v: e# L5 P3 U* i0 Q
#include<string>+ G- F) W& d$ D& o3 x. ]! _6 h
3 ?7 j! q4 m- v
+ M" J- P7 j  n8 ^( A& i
class UTF8Conv' v+ W5 b9 i/ G( d2 i: ^
{
0 {0 K& o" _' @3 O; \' E public:
8 W$ ]- ^0 V  \- \* g    static  int codepage(const char* code_page);
  S) K! o/ {: L3 o% d& m9 y
8 p- q8 ?8 j) i8 ~: W1 @+ ?9 N    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
( C, M" y' v: B; F2 \+ f, T7 J2 T% W9 i0 h  F, P! H  ~/ ~! C
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
6 n% E# y8 _5 U9 K, B
3 R9 C5 h+ s/ j    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;$ ?" `' s" T! r  k( H  J

" |6 r: f' @- x. i8 L    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;; f0 g# G: u- A9 w4 A) Q4 s

1 U" q( E5 M) r; c- U  O    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);. l+ k% |) @4 L" B

4 G/ o+ |. t1 Y4 Q% i    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);/ P1 N4 x* n/ F0 F" a+ g8 a  z! j2 d
5 _, U. B7 t4 m) w% A1 m
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
' b# r# j+ ~. m* l) m$ q0 l* T, C
/ @' A' }" w3 q, g1 K    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
. T/ y* }0 A) _7 I5 o2 i2 I};5 j3 D# f: b! d
3 _: z- }/ m, `
9 l, B% w9 V) X3 H# L$ S
, p: M( y: S& Z! V

  A' k5 T7 w, X, ?3 |
# V; i2 o# h9 c2 U, N& I  g, Q7 l: A
9 v/ O; H: h% `. [
6 K. W  M& h5 i" F/ W1 W% C# I! y1 \2 }7 x, s1 G( N
6 m; z, y6 G! y' B; |( e

7 H+ d- I0 g/ _8 N
8 o1 i$ P# B) Q. Y
/ `( Q8 E  S9 l
! C! f2 L( `, U
+ o5 s' @# j! j+ K1 {
: V* f! o; Q! j- Q+ P7 R0 x3 {, V8 r: m5 M0 U3 }5 c6 ~4 x" q2 k! b  i$ e- x6 k- Y
2 d" I( {( R- S( G6 b
9 C, }( u  `( A' B% p
# V* |# o; f9 l$ _

5 W, }; g( K5 W. J( K3 A! b3 ~) x) ?: k$ }) @, l- O4 S
6 J5 F# h: u; t8 K% @

( V8 y) y' x# y% d1 R  Z- J1 v! W: g6 c; r# A4 t

: b, K* M; _, |* M% z* V. r. y6 j4 p  g
/ e8 ~! A+ }% `  j* R

' ^9 `5 i/ D* d/ E) S* K7 E% a6 w2 ], L  \* b6 |* u
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
2 S" k/ F6 K. I- o- V) ^# B这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
- I; E- @1 }  [  r; y+ d9 G但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
! N2 E$ ]/ F: q
4 j$ B$ Z. g4 S/ J4 h% B+ Xand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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