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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~" x+ D/ Q1 L: a; E$ [' g0 |" x/ n
8 W! E; X  K  W7 i. f/ R
灌个水吧...# _3 d1 d0 J6 {4 s' F% k
/**' X* w2 g' E* L0 u0 c; v
*@file   
5 V# v1 s6 X  z*@author Jimmy
2 o# v9 c, p0 M) p4 d9 Y1 @% ^*@date   2007.1.16+ x7 x9 q* g" f# N% ?0 G9 C, S
*/
9 X1 k6 j# N9 J6 I. n#include "utf8conv.h"
9 d2 B3 ^& R4 S6 U
5 B8 t. A; q: a9 {: q5 x% {! a$ n: \6 p/ U) ~( _* K9 g3 O

( c( F/ n9 L+ ^" n$ K7 R) e- _int UTF8Conv::codepage(const char* code_page)( v; d' x. ~3 Q- a
{   
: y) u- d7 Q# s9 y+ c# _# {#ifdef WIN32
3 T1 \1 m  N: I+ l; |% d: h! @    if(code_page)
( g6 I2 H& Y7 c" I# a5 {% E    {         
% x1 H5 l- W. w; p( Z2 c        return GetACP();//既竚箇砞$ D9 p" t9 {; v+ O" p
    }      ) N# P- N; ~4 z" a6 x/ a6 n* L
#endif  R- o1 C& U. R& c: m0 d4 {9 k9 ]
    return 950 ;//taiwan acp" R. h0 Q& o0 \0 Z. Z
}
4 q9 b+ ?# q- B* q7 S
6 v1 c$ v, p# g4 o. e
+ ]$ ]; K  [* u3 E' V7 pint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
0 c$ P* v+ a+ ~* s8 }# \{
9 G' B7 ~5 B* [  ~: \. s#ifdef WIN32
6 H7 n! ~! Y+ Y. o* g& q' ?( r    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
; I) g% z9 @+ u#else ' ^2 U' \2 ~* |( a; C; t! U% P
    size_t result;% n% ~/ \2 ?- z
    iconv_t env;0 K  m1 R5 U5 Z- \9 a
    env = iconv_open("WCHAR_T",code_page);# g$ G' k$ M: [6 I3 F8 e
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);! H; h8 y1 n& S( Z
    iconv_close(env);9 }0 i! Y) S. d) U) ~3 z
    return (int) result;
; w1 U) E! v0 P; }2 K) B( O! B
" f; ~+ d  B1 a8 ?+ F4 t6 i' Q#endif   
8 j% L$ V& B, J5 B3 P1 D: p}
+ P! \/ P( p4 `6 I' \) f3 q
! B# c4 }& S. D* X6 ]$ S( \int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)  x2 h/ c; \- P
{4 [: E3 i* _$ R6 u2 J7 Z
    int len = in.length() + 1;9 A+ P1 F4 E1 ~' v& U7 C: H* v) R
    int result;
+ k. I/ z  g6 M    wchar_t* pBuffer = new wchar_t[len];8 s* o9 w7 W* K- W4 Y2 x$ g' M
    memset(pBuffer,0,len*sizeof(wchar_t));8 o" y; o; s. c
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
: o% j' v7 R2 x- ?$ J9 @" J3 Q    if(pBuffer >= 0)
4 L7 y$ t! |/ Y5 }9 D    {
, w$ ]! G# G/ X4 A% _        out = pBuffer;' R2 x4 R' A; }9 e1 r4 q$ J
    }
+ W- G# z: V5 n/ s6 U    else
, l' `) c. K! \    {
2 ?/ v+ e% N  _% G& w8 A4 j  c        out.clear();
& d$ G6 W: ^0 r5 z: r7 x    }/ l7 d* G. n5 Y) E2 g4 q
    delete[] pBuffer;
! k; f* V' |, K8 @9 D" R    return result;7 \/ Q5 Q% O( A8 i. |$ _
}7 B: [4 G6 p  W  v7 \

; Q8 F/ w" U8 Y3 B; Y( pint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
3 A  F6 E6 E/ t- z' F7 j{6 B. F* G8 B! C  S0 o: N$ D& p: s% s
#ifdef WIN32, A3 H' K, m4 R8 |9 n5 Q' D
    BOOL use_def_char;
' ?) p8 D: T5 j. U    use_def_char = FALSE;# r4 c/ ^5 e; K. t" Y; R1 j& o
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);! M4 A& g, W4 U# L* I0 r" x
#else9 \* v8 v% d" Y+ G- V
    size_t result;
; }5 l6 Y# w( Q) V    iconv_t env;" G5 w9 w: A: u  M
    env = iconv_open(code_page,"WCHAR_T");
! u. K1 r3 g' _, `" {/ F    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
+ b1 V, \+ m  P: ?/ N' D    iconv_close(env);8 W1 b8 C' H1 i% S
    return (int) result;5 N2 D1 D6 v+ N/ ~! I' j' ?
#endif   
* q/ g- m4 b, p6 z}* l! Q# e" d" D7 c' B' I7 A

% y) s  g: d) v# H3 M: Yint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
; s5 w, j. j1 v* J8 I8 [{! B, L4 Q! E  |1 J  u3 w& ~0 a+ L
    int len = in.length() + 1;' i" N1 e1 h' i* E$ `) f
    int result;' m! n" t- b- W* Q, h, w
    char* pBuffer = new char[len*3];
, s  G) ~3 D# {) z- a    memset(pBuffer,0,len*3);! W1 z1 f3 d+ E. b5 g
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
/ \% }, \+ E; v+ E1 |# L) J    if(result >= 0)
4 Y/ L' S$ D% E8 S0 x/ V2 a$ H% J    {  
, y. l* \6 C1 W8 {        out = pBuffer;
; J4 B4 K5 A+ c' g" Z    }
6 t# l1 n; m: u4 \) N" E    else8 e% Y  C8 W0 v8 P7 |9 y
    {* o* X" b0 _- m( Q
        out = "";
* g; g) _. I. m4 }    }$ s1 ~9 U4 s* C6 U/ U2 Y2 a
    delete[] pBuffer;
$ S  v# Q' V: r/ a    return result;2 C" n2 l+ o! U" k
}
! b0 ]  t/ p; A8 S# d! |: v
2 r% E3 `- v+ lint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)5 O/ N/ g6 @% Q! Y( l
{1 c  Q" M( i0 v
#ifdef WIN32
6 h4 H$ v7 V4 O+ l
, J' U: }, K8 z% j! X  g    BOOL use_def_char;1 _6 r. P6 ]% X/ m4 C7 R: I; J
    use_def_char = FALSE;
% w3 u, k7 J3 [" a& ]/ `    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
* F/ h5 h. r+ ^* i$ ~$ G0 v#else
$ Q/ \$ R3 ]( O% ?& @: v    size_t result;
& K/ \, L1 c$ G2 `+ }    iconv_t env;% y8 X+ g6 w& p5 v

1 \; G; f% T! [! }    env = iconv_open("UTF8","WCHAR_T");
, R3 O" h) r9 A9 B    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     + n- b- x7 D  E& G
    iconv_close(env);5 F8 Q5 y, R/ u+ `. M) ]
    return (int) result;% b, g( z4 z( D; \/ s/ w
#endif; `5 e' l/ E) V2 U# O
}0 j& W6 g  `4 x2 _) v3 I
5 G2 t2 I/ }, u- S
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)+ h8 m. }" T3 A  T- I
{
1 @6 O$ @$ V0 |+ _1 O6 G    int len = in.length() + 1;* p* l$ F- A+ M5 H3 h
    int result;& O$ G. V! V9 `2 D$ I
    char* pBuffer = new char[len*3];, j3 W4 H/ a0 ?  O
    memset(pBuffer,0,len*3);              
2 m" T4 J1 p, D; H    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
6 u5 M- t# n* M5 R0 u    if(result >= 0)
" E. C8 Y% r3 ]3 z! w    {# h6 x* E, e+ P0 x5 j
        out = pBuffer;
3 H' l) T: \- x# P# p    }# }& ~- I" I( i4 a
    else# j3 w/ W  z: y& q1 E
    {
  i5 w, ~3 T8 K. N: f2 G- U% d: O( S        out = "";0 u0 m# h: G. \, F9 q# U* ]
    }
% S9 D9 z# K4 j% d    delete[] pBuffer;  @1 Y  u# c$ V5 \8 c3 v5 U
    return result;
. E/ }4 m0 z, y# F6 B! }}7 L9 f/ g# j2 v) V; A; f' X( h
8 U' @6 A; E8 y9 I
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
- O* m: X$ T% @{
: R( W3 d' t) L* a8 S#ifdef WIN32
4 Q/ `0 w6 J- ~. W6 }( @; h! V# f    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);+ |$ o0 }0 z7 E; D. G
#else
; \/ T' n/ e  E    size_t result;
/ c2 E9 U3 P: r$ D) u% Z    iconv_t env;$ G6 [+ N2 v& [9 q/ g% p* e
    env = iconv_open("WCHAR_T","UTF8");) w2 q* r) e- [* \$ f
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);6 k8 ?2 o" b/ R7 y3 O+ K5 C. s5 R
    iconv_close(env);3 a. ~$ S6 W6 p0 R- q" Z
    return (int) result;7 L8 ]: ~/ H5 m: v$ Q
#endif. u8 m( M! z9 {9 d" G
}! T+ j7 m) X7 G3 y) G
. X, z9 J- B0 D( B8 H5 q
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
+ s  J0 A- c4 Y" U- \3 x4 q{
  J& y* _; b+ T! F    int len = in.length() + 1;
% P/ H6 F* y5 K! {+ I/ I2 i    int result;2 t6 l1 ~; m! L; o6 D! c
    //wstring temp;' p+ K! e+ [! y. b+ d4 N5 \
    wchar_t* pBuffer = new wchar_t[len];: a& c, ]9 W+ b: J3 R
    memset(pBuffer,0,len*sizeof(wchar_t));4 _3 C3 E3 g7 m) Q6 I
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));. h" P  P0 p: |8 Z: Y" x
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
2 x* A! m' k! E    if(result >= 0)4 d" k" W! A+ Y& ?. V! E5 e$ G% d1 {
    {
8 C/ Q, U) `2 u) V* i7 c- i& D        out = pBuffer;6 `7 c6 y# I  ?  p" C2 z+ J
    }
& N8 O5 }6 ?, s- _    else
! n+ \6 }& Y. v! _) |0 B) v    {
" a( d1 f! m, Z4 p& h. v5 s9 I        out.clear();      # e, B; ]# ^& @6 i
    }. B, x+ `3 J  {& P' c! c
    delete[] pBuffer;5 N% Z+ s+ s, K( J; h; x' A. b
    return result;
, {6 e& ^9 d) r% C2 T8 R}
* W8 A% M' l. P# \% t
6 x9 }% d; G9 e2 @* }/**, V2 ?# R% k; j: O
*@file     @, l/ P$ _; x. n
*@author Jimmy' g+ g  r; v, i4 V
*@date   2007.1.16" s. A( x: P; |* g( L
*/
2 ^( t( ~8 h& K7 V. ?2 {#ifndef _UTF8CONV_H_+ A8 c9 u# Q  [! t9 y
#define _UTF8CONV_H_" U( I0 y1 j9 j# @2 o6 e1 o
* C) r4 @, i) D7 E& b

5 W' u! p. m/ z#ifdef WIN329 A/ E  q7 O0 w' l7 Q7 x( I$ G
#include <windows.h>" ^# E" h6 f. U
#include <winnls.h>
$ ~% I3 m% K  z) a6 _! K9 ]#else
! X3 }3 R; m/ F, [; }  G3 |#include <stdio.h>
0 R8 B6 b1 b* W2 A5 y#include <iconv.h># T0 I2 `- O) e" q
#endif2 ~( Z# J( I. |( ~

* e  P6 L, C9 W4 k- O8 d9 |#include<string>8 M7 M7 a! o  g/ J3 k  b
6 |5 {; H2 u5 ]2 L0 Q1 }1 x: z; z
" K8 o+ u( w5 Y' G/ B2 v7 G
class UTF8Conv
; X/ B. O+ e/ g* t% D {/ [* v0 r2 V8 N
public:' V! Z/ z$ l9 D5 O4 o( {+ T4 s
    static  int codepage(const char* code_page);
  m5 c( x5 v6 _7 X' F
/ F( z/ h8 q/ z, k( N    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
0 S6 f& b8 w& e1 x4 J; R0 G8 B5 S; _* G# {
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
& l; S% L# N  N5 v
5 H( I0 J; G7 p2 K9 N. _    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;3 R9 x# S, Q. D) i% @: S& L

3 v- X, c9 c, ~, @7 y: x" S  @, ^    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
& G" w$ X3 j9 j$ e0 U8 ^. d) O
: s& T0 v  F0 s3 b    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
/ W) n; K) L- m6 d
8 W4 h1 K, K4 V  k' S: O. u. F    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);  a* B0 C! z8 y1 N% D

' G* I' Q& b3 P    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
, v; s0 K" j5 b4 o# L, R! K, A
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
9 {" `$ C2 a" p" n+ c  q  p5 {, H};. F7 u8 K2 W) C# {

( i* u9 u+ |7 q. o- Y% b8 N+ t5 Y* k
, k2 v; H- b8 _  j" P( G; s6 P9 N' A2 Z6 t) e

, u# R  U) J& ?7 A8 y+ i1 T
  `* H# ~& Y$ S" J  k. s& q% m2 H0 b. q# I/ t8 m, B9 l4 e/ {* v
- K2 r6 @; K5 e* t' F: Y' w1 K
. T  @6 g7 q) I7 n% W

* {7 Q$ f3 S! j/ j, z! c) g7 O) e- `- {0 T; @- }) m& n

( J* f/ N* K/ M* c4 B7 }9 E' p# [) Y+ Y5 Y2 A5 B/ R0 ^8 N% x% O

; p& E( w) ]0 Z' ?& h* y- j" E& P& ~, z; [& C0 N" u0 j

5 e$ V, T; P/ V8 H
- C3 k& j0 I8 l/ V# C1 g4 I* o, _
' L+ f5 m0 ], D' I2 C) i, h* w0 C6 F% @/ A8 u
+ V: _5 |2 Q0 f- k4 [2 `& \/ c4 `

% Y  x  F+ m7 I3 l( h) |/ @( z( J
9 z! {7 F. h5 H% T$ L! N+ B
4 k  |9 R9 {: ]$ O
/ n, H+ O& M. |( D/ n
" f: q1 X5 i3 l2 D: f3 n' p$ Q4 c; }1 s& Q- u
1 x) h" j4 V; O8 l; e

: t' g' `! L8 _: n/ q1 ?0 S3 C' y2 l) a+ f+ Q8 m' W
2 z+ Z5 c! ]5 r
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了 * d9 b! @4 I: J0 d: k1 F2 }; E
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
# o' z0 r3 h% \但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~/ T; K" }& {, K: ^; [9 x/ j5 ~
& _# `8 |" C1 \9 l
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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