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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~* T5 g2 H8 |+ h% Q  N" h* a( o8 k& W
0 I$ S, G% W' H" q4 u
灌个水吧...
4 L9 X/ D# c' F5 G/**
, Q, B/ t7 v; T1 e# I, M" E*@file   
# Z3 t% V, O3 o. C6 e+ \9 C. f*@author Jimmy9 _( }( T) A$ m7 z7 |5 e
*@date   2007.1.16
' \: P. k* z( J  m* s, m9 L*/
: M7 ~4 f* _1 z8 ?: `#include "utf8conv.h"" F; l) T1 ^- y& R  @! M5 I

, X/ |4 F0 v" G* q  i" i* S$ F, ^* Q2 Y- S4 l

' v& A$ H/ j3 i) _) R6 m8 Dint UTF8Conv::codepage(const char* code_page)
6 v* _) g$ H# l$ P; m% n% t{    1 `* w5 a8 I; F- G
#ifdef WIN32
& B4 t0 v! q3 g- M    if(code_page)( O+ e$ X4 l6 b* [
    {         3 S5 M. l+ {$ i7 _! O4 L9 d
        return GetACP();//既竚箇砞! c$ |2 Z8 [1 n- p% M$ X8 c2 L' j
    }      
" A. }) Y4 p; F& q$ E* s8 v7 F* \#endif
! M* J3 ]! e1 a* a) Q    return 950 ;//taiwan acp5 }8 U, E  h4 m2 S" A0 B) J
}$ r; W) e9 S% {0 G. \; g

0 v5 X3 ?+ a: c4 `  p! T% H
" V/ O0 u+ c' r) N* oint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
! c7 J* c6 M; D! y) I{
5 ^% q% s" t4 h#ifdef WIN32
  y1 a# b; ~8 n" p    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
: d2 z2 ?! r# D! ]4 S& k2 c#else ; s2 {) n) |, A
    size_t result;. L: B/ [7 T- c) ?
    iconv_t env;
$ L* X# z, Z! `+ `' J2 Q; ?% e    env = iconv_open("WCHAR_T",code_page);$ i* ?  H* Z% z# ^
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);2 S; f% P9 L7 N4 J
    iconv_close(env);
3 B* S" Y6 D. O    return (int) result;0 {% w! x! h4 h! i- v
2 v2 F' s4 ^5 h7 g# J& ^
#endif    % c' g' l0 x9 Z, D
}
, k/ Z8 H" a5 H0 W; c) J3 t# f  S
0 a+ z% i% u2 ^) i( fint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
, G$ B( d9 t& I; g0 \9 m{
. C( N6 C( t. P0 K* W" h& u    int len = in.length() + 1;, t8 J( }7 |! _4 J0 w2 ^1 X( ^, N
    int result;8 ]3 W; \+ r* H
    wchar_t* pBuffer = new wchar_t[len];
0 ?. ^/ E3 f: O: B5 l    memset(pBuffer,0,len*sizeof(wchar_t));
5 A5 y& [  M" O- Q5 b' V    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
0 f* l! p6 l' }0 M9 I    if(pBuffer >= 0)
1 K( M$ Z* S/ c: ~. V    {
" X4 d) _+ ]/ \! k2 t' ~. ?% v, S) x        out = pBuffer;
) M4 o. Q  J( ]3 m    }
: N9 l9 r8 U: z) Q( r. W: i4 Q    else. C- K1 H8 j# p" v6 J( q
    {
  O4 I! Q! j% a8 \5 i4 f        out.clear();
* A+ ?1 D; F, A9 w8 r% [& h    }
6 A3 I5 \' q9 V5 X    delete[] pBuffer;
/ |4 p& s6 ^) U5 W. h- t  T    return result;, Y3 v# Y  t3 O1 V9 t
}
7 a" W4 J+ d  z% c, _
( @2 E, z9 j: ^# Q  d# Y" `% |int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
. h! y) ]% p5 H7 Y9 p( ^- u{
* [4 d' }" \  r+ u! y4 F( x- [#ifdef WIN329 {- K0 R* a7 ?: q, Y) B
    BOOL use_def_char;
" S2 f8 e( ?' J* K    use_def_char = FALSE;- L* f: P! d4 S
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);/ A' |; A* F! r) z
#else9 S  }. d; _2 }1 ]& J( {( O
    size_t result;' ^0 T" Y6 w2 h0 H, a
    iconv_t env;# e5 O/ y' Y' @' Z' F
    env = iconv_open(code_page,"WCHAR_T");6 q% q* @$ I) y2 c  W+ A  c
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
5 v0 d" {( a1 Y8 Y. x) h    iconv_close(env);
1 [# w4 ?" f. X3 ?0 Q$ l) N( E8 p5 h    return (int) result;
( I& w$ r4 p- D/ L#endif   
0 s9 n7 I6 ~+ l+ _3 n}
2 F1 g# N$ V3 ?3 y4 ~6 Z! |1 T) b+ u; p5 {4 D: Y6 S# n3 x2 I. U' ^+ Q
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out): F+ |3 N5 C; L' A* P
{0 C7 z1 S7 x7 _: y4 s% `
    int len = in.length() + 1;; M/ T* r1 j3 K% n3 f
    int result;2 ?& x9 d, B" T+ h; E
    char* pBuffer = new char[len*3];
- }: n4 ?) ~- O2 I  _1 I: B4 E    memset(pBuffer,0,len*3);8 ~% s" \7 c2 e
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
/ n; S4 |; f8 t5 q3 a/ q; L/ G    if(result >= 0). t. B* l- J4 \4 N) M% _( B3 S% F$ a7 o
    {  ! k! s) a' y9 ]9 H
        out = pBuffer;$ V, k  G/ s! a; @; s
    }
" j( B# j) A; p8 c3 m' C- }3 \, L    else
/ a' e4 g1 ~2 ~# m% e, U  A2 @    {% O4 m8 T8 e" @/ |
        out = "";+ S$ ]" L- X7 u1 l2 X
    }& k, C! z& i* s7 e" _
    delete[] pBuffer;
% V. v* Q& f. D( M( [. Z& p    return result;
: E  {' Z0 e; m( T5 t4 h}: B( o: S- o% f) s- n

) q/ b$ U& q: i/ p4 [- p9 \int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
2 y+ x$ l) c7 C; F{  `/ |" V# ~7 S4 \4 d
#ifdef WIN32
. b+ e7 j1 A7 G' i
& M) K. H: Y$ U    BOOL use_def_char;
% S- ?& P* |9 }* h! g$ \    use_def_char = FALSE;
3 m, ?' t& \1 h+ Z' ~$ h$ N4 [    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
* h" P* f& s/ J3 d#else
$ x' T) E  w! f6 P) e9 B6 \    size_t result;& I7 r% S; {8 L! b8 g7 A( B1 S
    iconv_t env;9 |  V4 y1 Y  {8 i9 B3 N
5 H* |* e: ^( p7 N% m1 N# q) _
    env = iconv_open("UTF8","WCHAR_T");) t* H# z& l7 e: d0 t  o. D0 y
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
! L& _- O: O) s6 _    iconv_close(env);9 G  G: p1 `4 m) f7 E
    return (int) result;
& o7 W) b( T( b6 J3 O#endif
, B& d4 {6 ]. G/ q}+ j+ r4 J8 \- B" W  ?
: o6 e1 k8 C2 }: I( T+ y
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)' t: M9 Y% Y8 u& n; ?: m( J
{  [1 ?6 ]$ i( Q. V+ n& K0 H
    int len = in.length() + 1;
. A' N# L1 B' b5 X  O    int result;
# v1 \: E2 q8 n# K    char* pBuffer = new char[len*3];
8 O! s2 J9 Z" r  f5 \7 `    memset(pBuffer,0,len*3);              
: u7 L1 O( {- `6 k2 q. Z    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           + d/ g3 ^. A) ^: d
    if(result >= 0)1 ], }! Y7 d2 i9 F
    {; x9 r' `% G. V2 L- G* m. \" e# @. r
        out = pBuffer;
8 `8 [; Q0 b( r, ^, T" E) m# k    }7 i4 |% ]6 y  B
    else
) O( H0 H! L- Q6 o7 g    {! q: f: @% i7 q" }- [
        out = "";) Q% g! [) L5 w2 h
    }
3 S. o7 V/ ^) N5 a    delete[] pBuffer;
' p6 z/ ~+ w  g4 u! U' C    return result;
  K) {) |  i/ V$ q$ ~; g/ D$ s* f}
( M! V8 E5 Q' x  Q
" Z( N6 M# }' {; j7 Z5 ?; iint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
% ?3 v/ H2 r$ k{* J. g# D3 g% a7 d, A& z1 X
#ifdef WIN32
1 ]5 b+ ?" J/ x  |$ W  [    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
( |( {0 L" x( E* l0 o! |#else
+ B8 z' ]. `' n& b% G) E    size_t result;- l" s' b/ q7 g$ j8 K. `
    iconv_t env;8 r2 a6 c$ Z8 W- G$ {& K4 t
    env = iconv_open("WCHAR_T","UTF8");
% Y7 _+ N) X; U2 s+ E    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
7 O1 d* Y' Z8 _' J    iconv_close(env);# @  o+ u4 J7 J2 C: ~4 S  |& U- ]% b
    return (int) result;
5 b+ \4 n9 d5 c  \#endif1 f0 \! e6 o2 ~  ?1 Q
}
; Z+ _* z3 F1 S: l0 N0 D8 ]6 l* Y4 V0 u* Q! ~
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
% a- n/ P) g0 o6 j- G{
% h* e  Z3 W( P- z& Q' S% W2 a; q% Y    int len = in.length() + 1;/ |# u7 f% @+ \) D6 z
    int result;
  K7 o1 h6 C  |1 f' G- b, ]8 y4 \    //wstring temp;( w3 G2 A- W- v! ~9 Y1 }- j
    wchar_t* pBuffer = new wchar_t[len];
/ R& x5 _; l3 G  @+ Q    memset(pBuffer,0,len*sizeof(wchar_t));
% r, Q2 z9 M% z( M; B    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
* d8 z6 M" W* G9 P8 B    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
& r7 d/ z2 J  s) z    if(result >= 0). R- w" D/ u! w2 ]3 x3 B
    {
/ c. ]; t' a2 t, r& T% D        out = pBuffer;( ]& k  U6 G8 N6 B9 w2 A8 l0 o
    }
, j5 w( e+ v" E& R    else
7 o- z. J  f' M# }; ?6 u    {
0 G& t3 z. l6 ?9 L, D7 B! S        out.clear();      
  \1 N: S' O' R! d' U/ E    }
" `5 _' k+ t: ~3 L- ~5 C$ _    delete[] pBuffer;# \5 d5 N) F, g  A, X
    return result;
- L  Q. F& k' l}
" r6 R' n+ `, w$ ]+ u. f% v5 z# z9 u* q8 a2 o: T  A. ^1 j* @
/**
3 X8 Y8 n! p3 a5 J*@file   
2 h& q2 k5 I3 H' |*@author Jimmy- T7 Z- E! H9 I1 n2 a- l4 n- N1 N
*@date   2007.1.16
9 B9 w# p! ?4 S3 Q  b/ \*/4 }- X! i; T) J6 |
#ifndef _UTF8CONV_H_
7 U: K. j" }; z#define _UTF8CONV_H_* R; g" s( r0 u9 f5 d5 C

: e; m* f, r) L, |! N) w' }6 {' W; ]  E/ C. I- i. K5 d  J) Q
#ifdef WIN32
! N+ y' N) U. ?+ z' N* Y$ b#include <windows.h>$ ~* f! r4 I2 p6 Z  O& F% i+ Z
#include <winnls.h>: h% D5 m# Z4 ^( V1 P- I; D* |
#else, P* _6 t3 y  g" Q8 q7 W
#include <stdio.h>
3 L9 e! F# X& [$ D7 Z2 K#include <iconv.h>
0 v6 y) ~3 S, `/ l, D& v' @#endif( l) b( \; ^, C" c- T
6 ~6 H: r% p9 Y5 e. F3 ^+ B
#include<string>
( I1 b  ~6 |1 Y) M- a* e
1 {* q4 ~$ G1 j/ n" ^7 u6 `
4 w" Z2 G8 a. j' _3 w: vclass UTF8Conv
0 I7 n- F2 Q  S7 U3 v1 U+ ]6 Y: @ {
8 a, `% c: h; f& g0 ^& y* K public:
! e9 D* p9 _5 Z& ~: @% m    static  int codepage(const char* code_page);. w3 I" w) I: O" Y

1 [! R6 l( W1 M$ L& v    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;( O1 U$ B) f' W1 U' I6 u8 f* z4 e3 u
7 ]5 H0 s6 T- T- z4 M, W  t
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);- q9 [, F! T+ Q' G2 k" e
7 L/ z5 }: b* B" @
    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;# w4 V' F: G9 }# Z* a
" V# \$ y; T$ N& j: O$ m& \. k
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;5 q, ?1 ~8 E7 ], T
2 e6 O* _& G. H) a; \4 X. G
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
+ L% e1 V' u; m4 w
2 h* C/ `! V: [6 y8 K" g6 T    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);+ w6 R' n& Z$ k6 ]7 [; j( f

' Q4 x! Q$ N4 J# L    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);/ k% Q$ @$ v4 h3 c  \: h
3 L6 Q* t3 B! M( O" L& M6 S
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);6 d7 B4 W  Q) m* ]0 a
};
4 f0 a" L; G0 T( ~  K6 v9 L; P5 H% @: T' m0 C% y& E
9 G' T' t, l  ?5 ^( \* L0 U
1 h( I0 Y+ l3 B

) [7 C8 v# s. g- ~' Q8 Z# t6 S7 E- S* \4 v
9 N/ y- h8 `6 t$ T( {0 t

2 S9 z6 `3 R* q1 m
. @4 ~. G. L! y( u" @& i
/ x5 k! \, f5 r( ~, _8 X/ M/ M1 ^
  F8 D" i  T) q: Z& h( v% v: V! b0 n3 n% S/ C7 M2 J

2 R8 d$ `" ~2 i7 M# |; P
% S0 s( w7 f3 i% g! b, X# n+ \: Z

2 o5 P# b/ B% @& i% Q6 k5 I+ o$ [

$ {1 F, |8 l2 d' L/ y4 ~
: o4 ~9 k+ {! J, b. w4 u% N( w3 |* w# ]$ T% E9 V
, _% i! p6 b1 L' H8 }' s8 }0 @. H3 Q: H

1 W% F" D9 S8 Q" `% c. H+ W5 ^2 {1 m# ]  \- z, l( d8 K) _0 B* O
- _- V- \6 t# v* `* q4 {" I- E. C

* K: T* _" T1 a7 k3 Q! H1 r  C: j2 X  p$ W: B7 {

7 j; m3 \2 X2 Y( A: N3 ?' y) r8 U  Z) \! R, E8 ^% @9 B

7 Z1 v0 K2 ]) O/ Y# W* k  ?, P3 M& m$ J4 l; R
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :2 L. Y. I$ \6 h7 d9 v
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~. A, a+ O; i- |2 E& ?
) k7 L  X  U& Y! T
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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