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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~" [, J* A5 A" v  y

" r. }. L) L& Z  l灌个水吧...
8 ]' R8 K- |9 O2 E- J$ v9 r/**7 }& t  }5 u* j) B' c; c  @
*@file   - o+ i3 F! F2 C- `8 U) i( A9 I2 k8 Z
*@author Jimmy7 O7 S0 A; [% R% O1 Y
*@date   2007.1.16
5 J' P/ ]- i4 b*/4 h% Q/ s* r2 d& b, P1 ~3 {! g
#include "utf8conv.h"
. e: J- {6 ^+ }1 g* A; f
% J4 G/ f3 Y. b7 ]5 f2 P$ [# p; W9 a- F) \" S
8 l; P. U% ^# F0 h
int UTF8Conv::codepage(const char* code_page), R3 G- }/ j4 |: y6 ?+ f
{   
. N" m1 q8 r2 n4 a/ U#ifdef WIN32; I5 O$ i( e  j
    if(code_page)# a( ^! A% f" i3 N/ n& @
    {         
% E1 X7 ?$ M: b' M8 T7 P. J        return GetACP();//既竚箇砞: F! ~  B# ~, R! Z7 o
    }      
8 q7 U7 O% s3 C, u3 Z#endif
0 p1 m( ~- q/ I( N$ ?; X; e% n    return 950 ;//taiwan acp* s) P  D, Y" @# ]- R' X7 E* w% r
}" H7 d' Z. h* U2 Z9 k

2 Y; n2 k- f& d1 Q& z" E" P; z) A# \+ H5 E
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
) V( A) B, y# A{
+ I) k$ p' Y5 B1 A! j#ifdef WIN32
* t% z6 I1 u' d/ l+ r. @    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
+ H4 ^9 w3 W; a$ g#else ' V0 U+ S8 Q3 i5 x. ?% p4 G4 F
    size_t result;: k, \0 d  q8 w7 H* m3 J
    iconv_t env;+ c" u0 J- l$ _6 T2 y# D
    env = iconv_open("WCHAR_T",code_page);
" q; ?& T# P8 Z9 a$ q. i9 C' O    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);2 k" O4 R6 {+ T. _
    iconv_close(env);+ o' j1 M4 J! ^$ p$ g+ K3 G2 N" _
    return (int) result;
# ^' g( U5 |$ H. z$ o% a; t. j; w6 R! u
#endif    6 D2 }% q0 F$ t5 P7 @
}% i5 T) r$ y  k# \# A6 l2 l; d
7 o% C* |% a& C5 v2 J, [3 U* d1 F
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)0 b2 [, c. D9 H  q$ @+ [# f0 X3 H
{
3 M3 |  e- X9 o7 Y9 P, H    int len = in.length() + 1;' S$ Z: D# A6 Z& L" K
    int result;3 y; w: m' W0 c* j/ Z3 j& [
    wchar_t* pBuffer = new wchar_t[len];
6 D) q' c- b( j5 A+ H7 K. F    memset(pBuffer,0,len*sizeof(wchar_t));
) F; a8 ~" H2 ~5 E    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));* m9 T& F$ y. p' V
    if(pBuffer >= 0)
' U3 {) ^- }8 V0 C7 U6 Q: h7 f) O$ J9 [    {6 w4 m* s- |" |: \4 f/ E4 \7 Y5 X, x
        out = pBuffer;
6 y4 ~  l0 b& T1 {) a# N    }" @7 I0 H% A% ^/ A4 _5 Y0 z
    else/ }! [/ s. @' s' S& p, Q# T
    {, p5 j5 \# ~3 l, H3 g' O" l! V
        out.clear();
1 r0 ^& s7 y, ?- P$ O6 X' V    }: G+ d* c8 G' |
    delete[] pBuffer;
( t0 R. d+ m4 K! `1 l    return result;5 p& j/ U- R- C9 ^, V6 s
}0 u5 c8 p6 E  [& S2 u  u/ L# e
  O5 c, o( u. v5 m
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
( G$ X' |2 {, P{
& _! p6 f% Z/ i5 B#ifdef WIN32' f# L3 K4 t. T! S1 ?: D! T3 E5 C
    BOOL use_def_char;
/ }4 r9 s9 |4 G6 H    use_def_char = FALSE;0 C6 C5 `+ s' P9 ~2 s1 B4 q' @
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);, |! t  T& J  d: P: r, h
#else
% b4 U* N' a4 c5 [5 b- z    size_t result;4 W, ^) W2 S1 B
    iconv_t env;/ D2 T" G" L" y5 T
    env = iconv_open(code_page,"WCHAR_T");
1 g( [3 D6 r  Z3 [    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);; ^, b- U7 j# U2 w+ i' O( f
    iconv_close(env);& f7 o  v. d* B- u0 H6 a8 n
    return (int) result;0 z( Z/ X* R) D" D) E7 z0 N4 J
#endif   $ Z2 Z( @+ X0 v" ~3 q3 s) Z
}
, E6 y3 _, z$ ^1 \: ^) P  u2 C' B
  L8 p  Y" T4 xint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
7 K# M1 a' |; F1 N5 F% [{
# Z2 b9 E) y4 v1 V5 J+ g$ Y- r    int len = in.length() + 1;
4 d; S4 O2 u$ |: R6 N6 J    int result;
1 U5 B- f  U  m5 m9 X1 Z    char* pBuffer = new char[len*3];
  f& _/ ?/ R# p% b0 R+ y    memset(pBuffer,0,len*3);# i5 Z' v& y* i, z; {4 a' L4 D
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);, \' N- i) \: g& p) Q
    if(result >= 0)
7 z) |: V9 P$ h! z* b: d2 U    {  
2 U, |4 O5 _6 F: H        out = pBuffer;% z) Y. k( }* e. ~* t1 I
    }
) h0 k' R: p8 \$ I/ ?3 w. Q. e    else1 _) e+ s+ o6 a
    {
: J6 J' n* L# E3 u        out = "";; B. ^0 ], @* A7 ]
    }
5 g/ |6 u6 [" O5 R    delete[] pBuffer;  O! }! B! ^) m
    return result;# l* g9 o+ ^6 f$ Z2 c6 h' u
}, @0 M0 w) w! W9 [2 v1 T. L
! a* k  v( U( |
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
& r* C6 N4 o0 R. M: e9 q* G{
4 ^( J; j8 }9 C4 K#ifdef WIN32
, a3 y& g6 w, B+ [( X* L% s( s8 ~. C2 ?/ @7 w' I+ Q* }1 g
    BOOL use_def_char;4 M: X8 E9 c/ d
    use_def_char = FALSE;
% ~; E; ~1 P, t' \' L! \    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);5 V- C; `' w' T. M5 |
#else. ^# n. X2 G/ x  X% }( @) r
    size_t result;
6 ^; P8 l# I  B& R( Z    iconv_t env;
4 x* i3 P, X1 S2 O$ @0 [  H- X( p+ ]# r
    env = iconv_open("UTF8","WCHAR_T");
) x9 c5 r2 n1 ~" H% |; ?6 g" T  I    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     2 p" V, D0 d5 p' A
    iconv_close(env);
; f; P  v; Z; `1 t& n    return (int) result;& U2 f8 Z* c; A! R7 d
#endif
1 ~; ~0 b/ }+ ^$ ^. R0 Y}
) g: m$ o. J4 z! [+ L4 a7 l: @& L$ B8 B7 O/ F) f
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
1 D5 {  p1 n& v; z: G+ H{
7 B9 l4 l1 C0 W1 B4 j& `    int len = in.length() + 1;
' F2 T6 k$ j  o    int result;: b( a- h) P. N9 k% L, `: Z
    char* pBuffer = new char[len*3];5 B" n+ z1 o" O9 P
    memset(pBuffer,0,len*3);              " p# G; w$ k0 g0 U( Y
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
, P! n  |4 `% `" w9 [  @0 U& ^    if(result >= 0)
- B+ t1 Z& N$ n0 P- i; g    {3 B8 P) U( |7 s  ~( b. q/ t
        out = pBuffer;
* m, I! i" `9 l    }
5 G2 t* s! O( N& V; H( D    else
( B: }5 i$ @* ?0 X    {. L6 [7 e% j- l6 E- b8 @! i
        out = "";
/ X8 L. Z6 Z5 A) T! y    }7 C) F" W8 `: G  \$ p  X8 A
    delete[] pBuffer;9 g+ }$ k* o# [  z( O$ L
    return result;
9 u# ]2 I3 f  {! ~. X1 M}
% J8 D; ^- D3 x
$ F( `6 Z( c* q- C* s' ]  b! Tint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
7 u# d1 `# K1 ^. P{
3 J& `/ R, i! G1 b& @. Y  @$ y#ifdef WIN32
8 G3 R6 |2 @' l3 d    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
0 t9 L" _7 Q% w- T#else0 m! A: p7 t0 ?8 n
    size_t result;. u" R: G! C" O! c9 S
    iconv_t env;
* Z' W* [: T" P4 X. L, `    env = iconv_open("WCHAR_T","UTF8");
. \1 d9 O) f  ^0 I5 S" b8 X' Z    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);* Q2 X4 Z4 ~" `
    iconv_close(env);! B. B% ?( Q8 ^/ q$ E# F
    return (int) result;4 E2 a# U+ E. f9 V/ t+ i* P
#endif( E# i* I7 h$ ?/ `9 ^# _
}' ]  k: S' C3 C+ y! q  }
; l2 H0 K( ^9 W% |
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
) n* ^( M% X; P% `{
7 }& x, x, o6 t    int len = in.length() + 1;
5 z; ?$ c  _& Y    int result;
& v- M. v, g5 T# \" P    //wstring temp;
% p7 w* L7 P- n+ \6 A) q    wchar_t* pBuffer = new wchar_t[len];; U4 W- s1 I7 j
    memset(pBuffer,0,len*sizeof(wchar_t));6 ]0 @8 _, r  r' f
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));3 @5 z1 k7 G- \3 k$ B1 R
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));6 q: X% G( y$ [
    if(result >= 0)+ r3 E; Q+ `% P$ b; {
    {* ~: m0 t; c! }5 G/ R1 y4 O- L
        out = pBuffer;
2 ^! g  f" I- M, [) t( V    }5 {+ K4 G1 T& q& D8 s
    else, `+ z0 w) `2 w5 P
    {
) e% }9 X7 R0 [/ w  |* k9 m2 Q        out.clear();      
9 K5 k4 U1 d/ F- b    }
8 ~0 [, L3 `, M1 `    delete[] pBuffer;
* v* G; k' [  N    return result;
4 {8 `+ w' a- [}8 G+ D" [. I& G. _: l  G' N, J& B1 k

# \7 }( d- \5 @& n4 z: G/**, X5 e  ^% i) `3 |( _+ |' L/ t) Q, a
*@file   
1 K" v0 V9 L$ t, d' P5 Q" j*@author Jimmy
$ l( l2 h; z; A3 f*@date   2007.1.16
9 W) B/ p" T0 l5 J$ W, a/ v*/! q4 `9 t5 E! _7 k3 @1 F
#ifndef _UTF8CONV_H_8 s& _- q) I' t
#define _UTF8CONV_H_
7 k1 {( `4 U  g  q* o9 K# I/ N2 |' D3 O, ?, E  m6 r
  t' P( }2 B8 G5 P+ g
#ifdef WIN32
) K2 j3 l  C( z9 @3 B, G! P% ?#include <windows.h>9 o+ X! h+ m/ c6 G! V4 W9 n
#include <winnls.h>
/ a( I5 s$ t' A; g#else" m/ X' z$ Q7 ?. e& \' ]# W
#include <stdio.h>& }6 W" c+ |0 _: X% Q6 L- Z
#include <iconv.h>
& b( ~- ?- M$ Q1 j" A#endif
2 P" `+ G3 B. l0 C3 d4 x( \6 j9 S
% }* L2 ~8 b3 c0 v; A) @#include<string>& f# c( U6 G+ i
9 d- |) R: ~- ~3 X0 t5 P

0 }; v2 M$ D) }6 O: s5 eclass UTF8Conv( _! K* B) I6 L. a' C' U; K
{
8 i; Z4 s/ U2 ^1 J& p; e% T  V9 `# t public:
& o! k# u& \0 G; s& i- c/ U& a    static  int codepage(const char* code_page);
" ~( \& o, @2 k! w$ ?/ I1 g- M" H, G. q1 s$ [/ {
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;, I" y5 @; c& }; f
3 N3 j3 p. J; N9 \" v
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);3 k1 X2 u% ], _( x  w* e3 i

4 `- k) n/ N6 E8 K    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
7 D0 m; @$ s" e+ C# h7 Q3 T  a! h1 ~
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;4 Z. O& g) t- d3 v" ]! g$ A! B8 C9 C
) M# Q$ i0 A3 N7 u7 t0 P
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);$ d+ W$ i+ K5 }  ~2 W
. I- f# g& h, Q. w( P. V
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);& @  F8 X" A$ d. F( W5 e

3 D2 y, v& z" G3 m1 I    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);- m% G, D* q! \6 Z/ m3 D
4 M% l. T, |( c! L" S
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
) a" \1 I0 a& i" x1 d- R& t};2 a" [" o4 T0 d% z/ i6 o
& B9 v/ d3 |, P* E

3 H7 _+ N" @4 V" C$ g6 F9 e6 _
2 a/ c% n3 q% f3 ~1 a7 O+ W7 B3 V+ [$ c! ^' ^5 G2 E
! C+ Z% Y6 L$ p2 _# u
, b$ ?( ~. D6 q% K& q
- w9 P5 `) M6 Y( t* Q
, j. X& T) c* q% j8 p) |0 u0 n
: ]4 R/ b" O; X1 w+ ?8 |- c, [& r

' y, G, t6 W0 n0 G9 w
" \4 c) ~- Q" x& \( V+ e
' _. Z% y6 j7 a$ g! F3 ?
1 ]$ A* Z! t* v! `/ u: {8 _+ s
5 e1 @! f" J! p0 @2 U1 U
( K" f8 S6 r/ h. x' k
- {9 m" q  D: q3 N; f2 V# w4 j0 g! |4 i8 l7 a# w1 k
# k2 {' X) G* w" W# ]

3 S/ L: F/ }' l; D; V1 T; [0 q) b8 U9 E# B) F
/ r; g. V) @/ X" g) i5 ]. H+ q4 g

/ Y4 B% c% M  `1 u3 E5 j7 R; A. y) m5 p. S: m

& S# x' h- r8 B* F
/ H8 s2 e9 s! z' w" V6 A/ w% ]
) |: R- o& f" {& U8 v7 \" U
0 |% A& l5 ]$ d8 k* @
2 S* D/ H7 V( O9 S2 n2 W6 {' `; U" Q5 g+ _6 g
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :6 V0 [# t0 j* _$ K
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
3 D1 V  K: c! P" C8 |- A' r1 O
% C/ q; F0 h" I+ U6 N5 b3 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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