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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
# ?( `7 b6 ^3 h. G3 e8 l/ B* i; _6 E3 [# m+ ]" r  ~* E
灌个水吧...  W' n- j" x7 ]% [
/**) o1 K. N6 S& P3 y& t) X3 h0 N1 g! _
*@file   
. N' s8 q3 s9 s1 W1 k9 j*@author Jimmy( a( V% D% ]" u, y
*@date   2007.1.16- ~/ U/ u4 r( C+ J8 q
*/3 F) {! B; z7 q+ a9 W! k
#include "utf8conv.h"
* F1 S6 B* _. ?* J5 D
  \) D6 ~1 E! e1 _+ P& A0 S" D+ a7 A' R+ z

( O6 Z2 C& F1 w: C& K) Z* fint UTF8Conv::codepage(const char* code_page)) K. D5 ]& A( V# {$ j
{   
& H; C8 x" @) k8 e% o6 P#ifdef WIN32
  e( \- ?1 L) ~( j0 t( Z    if(code_page)
/ x1 l4 i+ W' D9 g# B- a5 c- ?    {         ( ?4 y( _' P5 B, q" m+ d1 F0 [
        return GetACP();//既竚箇砞) j( O8 p; a' k' P
    }      
7 E# A9 G$ e; H#endif$ Z7 L* u% Q! y, N: b1 V( f
    return 950 ;//taiwan acp
* ~2 c* x2 }- }7 q5 e3 x}4 D8 L& z$ h) m1 p
0 q* b3 H, f0 u3 _

7 @# J9 Z) s0 {/ |/ }# t  T; Eint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)( H; `  A4 M( R7 Z) y3 \
{6 a: s, o7 C1 P: m5 ]! A; [! m1 g
#ifdef WIN32) |5 o: }' `3 w! P! n3 ?
    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);  u# e* I! p6 ]) ^1 t8 v; B
#else ' t8 p0 [0 E, a1 j! g# l
    size_t result;3 J! F' c$ B5 \0 z7 N* `
    iconv_t env;
4 ?  Y9 o, }- j& T( L, c8 \! O, j    env = iconv_open("WCHAR_T",code_page);% z. m5 p/ U, v
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
6 t7 {/ ~" ^1 o! @" e5 g    iconv_close(env);. X! c$ j" T' p6 Z. W  D
    return (int) result;
% s* ~, s4 n: V* ~2 P. H4 j5 v6 T6 u6 |
#endif    7 ]( x7 ?# J, s  w$ f
}
2 ^8 o- G1 p* ~& k' `6 Q8 b; o* E6 ?
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out); u; P) l- ]! d" P/ g7 |: j+ |
{; T$ h- H3 @' y) `& O3 I, J/ u
    int len = in.length() + 1;
9 U3 Q$ ^4 W5 S# r" V    int result;
* [" t. N! b( H    wchar_t* pBuffer = new wchar_t[len];
6 k5 G2 p# l- ?    memset(pBuffer,0,len*sizeof(wchar_t));
/ [5 V+ t* U* k! Z* s    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));1 ~4 F! M8 a/ J  f; i7 Z/ {
    if(pBuffer >= 0)3 Z" x  W& Q0 E4 @3 i9 l0 ]
    {! q4 M' V. m# R4 a
        out = pBuffer;" i- C$ i& S1 Q8 N) W
    }
0 l% c% L5 x  t# `% ?1 I    else
) L+ E; V0 X& R) }5 \( D    {
: U& L% b/ x# V. j% V/ h        out.clear();, J! \6 b# K2 S& X; a9 t, L& I
    }3 \5 u6 q# [9 l# I, B
    delete[] pBuffer;
4 ]$ x5 A3 z6 I  f    return result;' p( ]+ ^. v- s
}+ A6 q, d$ x; e! j% P4 r& v

( p# c. l% M" y! F1 |2 S, ^int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)0 j  y) p! z! ~/ E, A6 o. t
{& I( H' J" [0 J9 U; \" e9 ^; E
#ifdef WIN32
2 v" o+ S7 b: \1 y/ t0 m    BOOL use_def_char;" D  K! ~, |3 D6 E0 B
    use_def_char = FALSE;
5 i* O6 @$ u) s    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
* ]6 N  H8 M: Y$ b, o% w#else, b+ |+ P1 @! [0 {9 M
    size_t result;5 a* |0 w/ I$ n3 u' a
    iconv_t env;" N2 [$ F4 `2 p1 G5 b
    env = iconv_open(code_page,"WCHAR_T");
0 w3 U0 S4 o; E! @. J1 P5 v8 ]    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);+ _* ^8 l4 @1 |' V2 O& R; T
    iconv_close(env);- {9 j0 q6 `5 Q& r! Z
    return (int) result;
8 m) Z. T) R* A1 i5 h#endif   : D; A6 E" q! G  a
}
( Z6 T" `7 J- L- H! E7 d) D' P6 A5 A# e; @" G5 v% g: p5 v* c/ {
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
3 D. i! l" w1 j! m$ O{# W7 \4 C5 d# U( Y
    int len = in.length() + 1;" _/ P& F+ i) q6 K4 A2 U
    int result;8 I+ L; a0 n; T
    char* pBuffer = new char[len*3];
: m! K* h+ B( b: W, J    memset(pBuffer,0,len*3);2 H) E, i6 ?' ^$ d) l) Y
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);" c' K  F9 r! C4 |
    if(result >= 0)( P+ i' J2 ~9 B( H) u+ e. _
    {  
, e& D' d( S) _. c        out = pBuffer;1 f. X* x' ^* _! X" G  ?0 ~
    }6 z, e; q+ j7 [! Q$ z
    else! c/ z, b0 K- P6 i. W4 }; d4 k
    {
2 ^0 \5 D; ^, u0 r$ s        out = "";
6 H+ D1 i8 [. y    }. _3 o4 h( U3 p2 |8 h; o/ D0 n
    delete[] pBuffer;
4 u! s' i9 t5 g* M& L+ }    return result;
( z* `, H" p- E& ^; ^0 G3 {}
3 ]8 E- [* D: Y
/ i% |5 d( N' E& y0 V: v! \7 \int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
* Z! z7 D  q8 A- \2 S{
5 Y: @: b+ [# P) [8 v#ifdef WIN323 d' U1 {+ K6 R, P( m0 Y4 B$ G
: y1 s6 W9 z  w# `* l: ~& g  \7 q, N
    BOOL use_def_char;( r' A, p1 b( b. n
    use_def_char = FALSE;5 e3 r" Y( X- {' Z3 A
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
# [$ g# K0 V( h  A! S2 x#else
; l7 q/ k9 |: ^5 F    size_t result;$ e' M3 w) ^, b( ~3 H
    iconv_t env;
5 L  {/ l  Q: ]/ M) D# \& [0 Q7 B% j; ]2 F3 }$ w+ L
    env = iconv_open("UTF8","WCHAR_T");8 B' Y* ~1 h7 Z1 A0 B- n$ X
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
. x7 A1 r9 |( i  ^    iconv_close(env);1 m( R# f3 d7 r
    return (int) result;3 O& }' y7 f( j1 F6 K
#endif
/ E$ I, I  r2 J5 w0 ~. y- i}
3 J) [/ y* H" G7 v' r
4 r7 S8 u) V. d8 B! U+ R0 s7 g8 Xint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)$ E4 x, |7 F7 w
{
6 t  }4 h& r, Q  S* W    int len = in.length() + 1;- d% j7 ^* n; H' ~" K
    int result;
: Q- I  T8 a) r' n8 J' Q; U    char* pBuffer = new char[len*3];* N" s4 d+ v5 S- {% a5 ^0 ?, k( f
    memset(pBuffer,0,len*3);              2 C6 |/ \3 v- r: B' Q( w4 ?9 j
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
2 |, P* @5 m9 H: z2 \  D    if(result >= 0)
, X" z" I: e5 v    {2 ~" I1 J( `2 U5 z1 X8 r
        out = pBuffer;3 g$ n7 s' N" _, N4 W. E
    }  z7 b( V0 a& K0 \: I
    else6 e) [2 ~' ?4 P! D
    {) m0 @8 M- z6 {* K' T
        out = "";
# v7 v' {8 u: e; g9 r5 W    }/ g) W& h; v0 L9 n! e) ^4 m
    delete[] pBuffer;1 ?% J- U) U! b7 u
    return result;6 h2 K% A6 Z. @  d
}
& Z- K( h( u2 J$ ~3 @, ~- e/ g
* y! a4 O$ `7 ~. w, I  cint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
1 |7 a/ f, |2 R# |* n3 w{' E) s1 q/ L" b/ W( p$ [7 G
#ifdef WIN327 A7 S3 Z  o( ^1 `' o: ~" z/ N
    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
8 k, ~5 R0 \  F5 \1 i3 }0 X' M#else
$ ~5 D' `" g7 J    size_t result;3 K1 Z1 }% |& Z' g
    iconv_t env;3 ^$ U3 ^4 A$ N  j1 Q
    env = iconv_open("WCHAR_T","UTF8");% a: i" m. ^4 _8 u& I6 ], F2 ]7 A
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
9 N2 t% a; j0 J( z    iconv_close(env);
- B/ R" n( n6 @6 @: s: ^& |    return (int) result;7 a4 D) e8 W9 q  G5 F6 D% H
#endif% V9 V! B- K9 [0 e
}# [& W# M  b: Z2 G+ C0 Y+ I
% t6 V' a* `$ ?. V3 `; I
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)0 f" \) X+ ^8 D8 q" z( v5 c: J
{
5 y- c( c9 h, L* h; P* k( b    int len = in.length() + 1;
( p) G2 N& a6 ~    int result;
. l( T% u- C; Y1 E4 @+ }, U    //wstring temp;
5 H' ?# b$ h: K    wchar_t* pBuffer = new wchar_t[len];/ i# d( {7 z! [7 C' ?
    memset(pBuffer,0,len*sizeof(wchar_t));: w! z6 e) r. z  x6 F
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));9 {0 C% i, h+ @* h
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));- ^/ T- Q: ?3 ]4 J; G* E) ~
    if(result >= 0)+ ~; z! r* q' x: m9 M/ t
    {$ n: y' a# q* v: X3 Y
        out = pBuffer;$ H  `: f, H" y& ?
    }
2 b) e3 J7 P. X& Q  {5 s2 s    else; l4 F  h# M* F1 p
    {/ m: T. U( z' K' C/ e
        out.clear();      & B; T0 j3 q" j8 w5 \! D* E
    }
( @1 H# p( u" K# Z" n    delete[] pBuffer;
; [" B5 J2 |6 m4 k$ h; ?1 D5 e$ r  x    return result;, z  w; ^0 q. b' U+ J
}
1 p& i$ e% \( _% L$ }: R5 V6 ^  h2 f. P3 L% A6 T# ^. v
/**
4 O5 ^. i' q4 j*@file   
9 |0 m: y, J1 U# ]* Z*@author Jimmy
& v/ v1 d2 G: t- {3 f3 t+ V*@date   2007.1.16
, i/ n0 f  o8 f" V% Z' z+ Q*/
+ s7 h1 X+ C7 _& W$ M4 |7 t#ifndef _UTF8CONV_H_
! G. B. j) y9 D& Z8 n#define _UTF8CONV_H_
! ?5 n8 L; H( m& d4 g; U
0 N. Y  w5 g! V( f4 v! z* O; k1 w  c" I9 T6 h1 u5 h2 K. B/ \
#ifdef WIN32' G/ I( F. [" F8 z7 |6 W- Z) e
#include <windows.h>
! Q) j/ N7 n6 L# Q$ s$ C#include <winnls.h>
- U0 {) s! B' E/ C, a#else: a( N% ~# _5 o. ]" Z, h( _
#include <stdio.h>
$ h6 O- d9 r6 G/ O6 O" v7 x#include <iconv.h># A" C% i; q: A8 R- j
#endif
* }0 k$ m9 S; }. O" D# k6 l% o5 Z$ H7 ^0 f' o0 h( V$ m2 f
#include<string>5 [+ t; T) g, E( T) S" L6 j& Q3 M

1 n1 A" N9 _2 q: h  S& B9 v6 E3 N- i4 @4 \; R0 S
class UTF8Conv; n# w4 y- @4 u- i- g7 N
{( p0 _' i# c8 ^3 {7 b
public:4 n' a: \8 ?! j" m% y' s
    static  int codepage(const char* code_page);, B8 X! |% l* L$ B2 b$ R  b
5 r! M3 R# E2 N) w4 u7 A7 S8 g9 r
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;/ ?6 w5 H2 ^+ B3 H; \( l' ?5 l: A
( Q5 M9 C, P/ u! B& T: X8 T
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);3 j" j8 @8 l# p# F# i( u. [

. N% S+ g* f) v9 w; u: T    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
/ S6 n( F, a3 l! K9 o; K' P0 @
+ q2 M) Z) G9 w6 T    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;. d; F$ B$ Z! `# c7 N% f% Q" Z

" K  ^) j. P7 l5 N  c' [    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);/ A* t  K7 ^0 j& ^3 q6 h  c1 q

* d# e# h. c/ ~. Q    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);& v" J; H1 E; K6 p

  I, D4 F0 s! \    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
6 A; m2 ?/ N- l+ u/ o. {% |7 R. c+ a5 T! ]; T9 D7 p
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);3 O3 T+ J7 _6 R# Q
};
0 v! `% d1 ?6 q0 y/ ]8 f1 r8 R8 m3 ^! _& _- F/ w. Y6 }" B2 n$ d8 Y
- c  f$ J% ^; r) o6 S' k( m$ k6 {

  b+ O0 V- j7 f/ Z7 ?/ r
% w: l/ B5 R: {  Y7 h
9 l4 C# O2 Z( f/ l6 s' L
0 h# x7 A  u+ f4 V. }  p
& e! l' |( \5 d+ M; y( v' w' X( f& p2 e- \& t% x

" C0 ?* m  ?! J& ^4 P. y0 _% B4 y( G0 I3 x; y* _
: y: D7 H, U& |
3 a: I0 X& ]) Z/ E% Q0 |
2 R, n" J" P+ [( o7 c' T
. c) S* @% w  n. w" \

3 q9 _1 z/ U: f8 Q! w1 x' ?
5 B! t: w2 T& A# b+ }! I4 [3 `  C- ^% x, z' L
+ d4 N; e3 @4 t. Z" k1 e
$ p1 N! r* a; k3 U& e- s

' s. u# z: j8 R
" I. }- X# q- P1 Z. D" D7 Y& ^# N8 t. n. m- p% Y+ i8 c% J! T7 U7 T
% c6 l, l! j5 f' a
1 b/ f/ t. o0 }% ?
4 n. j% K4 Q1 H. x

& @! |1 M, \( X3 {8 d  a" G+ b5 K
$ ?; e+ V. F# y; A$ g2 [0 r
- |8 b7 |, k7 M1 ~8 n' G9 i& g
6 p2 Q% }4 d* g7 \3 x#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了 : R8 Z, y, O! p+ k) n, Z
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :3 A2 u- ]! x" n8 s( ]& B) d
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
0 |* c! B8 h. J% O% k3 u7 E$ B* }, t$ e
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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