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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~( V0 m  D- ^2 m# \1 Z4 i' ]

5 t$ w/ t* `2 q+ X( C灌个水吧...
  T& V+ ]7 a# ]3 H1 z/**& n/ l# L3 X9 V! P: z9 P
*@file   
2 L  m& P5 C( d! }: ~; C- F7 h*@author Jimmy7 ^% F# ^2 C2 G% L( a8 j3 x
*@date   2007.1.16
$ ~$ Y5 z) {! R) t0 a*/
& F* R: G9 C  H  n) X#include "utf8conv.h"
* X1 Z" W6 r1 l
+ I3 ~7 G8 ^, z1 X, b- X+ Y, ^( K# B( |  w4 L
: I/ |% f2 B, L% R. q
int UTF8Conv::codepage(const char* code_page)
0 s3 r6 o/ `" b; r( x$ x% p+ G{   
/ O, O; a* B  j2 [! p. I0 o. |#ifdef WIN32! d9 v. H4 \: Z5 i5 _% P
    if(code_page)' z9 E& q& ]* G
    {         5 i# u! u1 V  y6 Q. z/ B7 `
        return GetACP();//既竚箇砞0 _8 J* p" E# {
    }      % {! U, I6 O+ d- r) r3 z
#endif( O% l2 m1 |" w4 |1 q' }! ?% `( g
    return 950 ;//taiwan acp5 J+ ^3 a4 g$ O1 G
}
4 Z: Z" h# O# G7 T
4 H5 l0 K' {+ N0 ^- C. x. X4 r8 w0 j) Z! a( A
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
0 T* t7 P# J6 @- h/ o' P( [7 S{  P# W- |' H& M& }
#ifdef WIN32
5 i7 t0 q" p. R6 S) h    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);$ }) e( e  i- S; ]7 [5 w
#else
5 e5 ^1 w) Z- M; ?1 P* O    size_t result;
! x8 v  Y( S# L( ~& D0 a! e) I    iconv_t env;0 K3 c  o6 k. g8 R0 l# f) c
    env = iconv_open("WCHAR_T",code_page);
/ z. m$ }$ r' G5 [  D    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);! a& H0 |; D8 G5 p) a
    iconv_close(env);6 u- l9 B2 C2 O; E" `0 p# p! L
    return (int) result;
8 B2 w- l9 O/ w( q0 y  x1 `  G8 z: K3 h- G8 D+ l
#endif    6 G5 @* |( \5 u8 Z( c
}9 `; F, ?8 m. a  v/ e- s9 q6 H

% V% f9 N" s4 j# Z& ~; a6 n7 Mint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
1 {2 u9 I* H6 {9 v{1 z! M* J  _; _9 K* d
    int len = in.length() + 1;
0 u. _* Z% k8 W# q3 x2 ^    int result;9 m+ D' l$ U% O# i* |* d& _
    wchar_t* pBuffer = new wchar_t[len];
/ x5 z% h2 [  s7 H! M    memset(pBuffer,0,len*sizeof(wchar_t));
7 B- ^0 M. M* Z    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));* e( W1 m7 l+ Q
    if(pBuffer >= 0)
* m" d" c9 f# ]( j5 w6 x" b2 b! K% @    {
( K) T, Y1 z* \2 g2 s% F        out = pBuffer;
2 t# @. R! A$ p1 P9 c    }
& L; K: }# G9 P: f' f) s9 i    else
6 D  W  V; h* P( K5 a/ H    {# A" A8 w; z" q2 Y3 A8 I. }, J
        out.clear();, q7 s+ Y8 L' r9 j
    }
  G' S& P, |) }& Y    delete[] pBuffer;4 o, n0 s" t9 v
    return result;
7 j0 n- j+ \. K2 e. s8 j}( f; K; H( T& T
3 F9 f/ C& G, ~4 k- _
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
. e1 h, F, C1 ^{0 w2 t  ]. d$ }  B* ~7 y
#ifdef WIN32  c) |, P- o3 d" {
    BOOL use_def_char;* V( S9 C5 q% o- k
    use_def_char = FALSE;5 P; d" r4 v# R% d5 V, k* ^
    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);$ I1 {% ?& M: P5 \2 O' s# q% L
#else4 I' Z7 A$ z& l1 L6 a7 i
    size_t result;
0 D- A! G% e% H, B: `8 L    iconv_t env;
, y; N$ @! a; b! ]0 V- Q    env = iconv_open(code_page,"WCHAR_T");
: y3 m/ c( ?0 E$ r7 g- L- K    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
9 v( B. `: f3 I( P& I    iconv_close(env);
/ T, F; @2 x7 D. w% S    return (int) result;
. f/ N; f7 Z8 c+ A4 Y( s" }" k#endif   
( ?" Y, m: p3 r}" b: i' x( Z# D) L) j5 p( w" s

; r5 q) ~! F' Q5 U; A9 H# c7 gint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)  ^5 `, t1 O2 i% F: A( T* Y
{
6 U) s5 K% \- n/ K& J; t    int len = in.length() + 1;
- n: h9 K, ]2 @/ r  F  G    int result;
' S6 [" \  U: f. |: |1 v0 g    char* pBuffer = new char[len*3];
# |, o: R; S9 q8 |" r. k/ e9 Q    memset(pBuffer,0,len*3);
0 e1 X+ l" d. {) z3 R    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
" y( x' F# T2 _' l6 Q+ x3 x9 i% O" W    if(result >= 0)
" y. P! [4 W, e# c+ ^6 b    {  ' ?4 y  p, M, r' \* b6 }
        out = pBuffer;
$ u) X- r0 g' L0 G1 R3 t* `; `    }8 U3 E0 t) x0 f$ Q5 j% A$ y* j
    else
0 }+ }5 R9 V2 u9 Z. G0 I    {
" l1 M! \) w1 ^3 q1 c# Y9 p1 X1 u7 u5 ]        out = "";4 F' ~" E7 |- G, Q; V" D. R
    }
+ O: @- t9 u- M$ q/ C8 u( I    delete[] pBuffer;2 t: ~  u1 f6 j& [
    return result;9 K' `6 M& s7 p
}
6 L6 J0 j3 k2 `9 t! a& M9 X8 \( o- D9 K2 c1 E) H8 a7 K6 U" g
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)% w& @* l3 o: g, B, C
{8 G) c) n* B' F2 u+ r
#ifdef WIN32
- K* L1 N$ S* P" v  C
1 p0 z; P: a2 ]* W# r1 M; u    BOOL use_def_char;' F6 Q2 o, u$ d* q. K: R3 e! M
    use_def_char = FALSE;9 w; ^- k+ Z  f4 o) z% }) S
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
8 }  K4 R2 i0 X) s3 H3 H. k#else8 z  ^" _% G# U& R
    size_t result;
0 Q! Q$ f+ x) D    iconv_t env;/ H7 ^3 x: O' Q$ [0 i! z

( q. o3 D, `2 @# S" l    env = iconv_open("UTF8","WCHAR_T");+ H/ j' I6 x$ L+ w; o& O8 F
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);       t0 V$ k9 I, R- H, c: |( ~
    iconv_close(env);' B: K, `* x# y0 K7 I! h' Z
    return (int) result;
/ C: q* |& `0 i% e  Q2 \$ T#endif' [- R! m3 B. U
}( z. E9 d! f  J" ?
  U* q, V! K' y. y+ u% [* |3 M
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)8 A! F: ~0 S- ]6 b! u5 N) T& e9 r2 ~
{
1 b  h2 [' z# d( r1 \, D    int len = in.length() + 1;2 i: M1 F* B* `& k& i6 v( w/ l
    int result;
; X  ?0 Q( n, ?! h1 X& {    char* pBuffer = new char[len*3];
& c3 f$ F1 i& T2 c    memset(pBuffer,0,len*3);              ' t5 C; Y" G  m. n9 k
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
, k2 v9 |% ^  {# t% l9 j/ n( B    if(result >= 0)
* f( ^3 U8 ]5 S8 z8 F    {/ ?3 a3 l* `$ _; d! |% h
        out = pBuffer;
4 k+ R+ [( }. E1 C* h    }9 w+ `) C3 q& x5 i  s2 s
    else
; L: C( b' |( e0 I# }( N& g# s( |& Z    {
2 C- l7 u# \! n2 A        out = "";
* @4 U0 F4 o: s+ o    }
+ _) K+ R4 m% c% d9 W4 q/ W    delete[] pBuffer;
) u8 }+ b/ ]' \3 s0 b  ?" s    return result;
, e* C8 M1 k0 t+ v. q7 H}
6 d* [3 I8 e$ a1 k6 Z! P' V( [
8 l4 Q( e2 |& E. m: _; u5 Pint UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
. K8 D5 e* [9 h5 C/ E' p{* Q  a3 }  @& s3 b' O( s" t, ~
#ifdef WIN32
* G- ^8 Q: h1 M! {7 {    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
+ C% y5 c$ {# Q' h3 I: J4 r& F#else
- z( a5 I: n3 T" w# p0 y4 c    size_t result;6 ?" k) u9 B5 G
    iconv_t env;: y9 i6 ~( M  r. u1 e! d/ s
    env = iconv_open("WCHAR_T","UTF8");
$ t9 x) @6 D7 [4 `5 Z( J1 s    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);' M$ ]4 u- E9 Q, D
    iconv_close(env);
$ g9 F$ N) K: K  ]    return (int) result;
1 ]/ G  e) j" e#endif
, I) {% Y' v$ {7 m% D/ ]# H}
4 m% T1 r4 I3 [3 H0 ?8 \1 i; Q( n6 s7 c$ V( `
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)* ~$ q/ D1 V2 D- R2 ~! V. o/ v8 `
{$ p; l# `: r' j. z7 P7 u" ^! @
    int len = in.length() + 1;5 [& d* ^4 W( f" i
    int result;! Z4 p$ d: d9 T& i
    //wstring temp;
7 A$ d: n! O1 l( r0 ^    wchar_t* pBuffer = new wchar_t[len];
0 d7 T+ M5 w# i: U3 |* ^- I    memset(pBuffer,0,len*sizeof(wchar_t));* O; X$ x4 [5 t: J
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));9 b! Z' t6 v4 G; g- y: r  S
    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
" C" U9 K9 m! L    if(result >= 0)
1 |$ k1 S8 X7 V* ]0 g! r    {
6 ]' Q& f1 _# v" u        out = pBuffer;6 b; L% b1 h( a- @+ h
    }7 c9 Z' \/ S' I6 S) [7 t
    else
9 [6 U6 T9 e/ l    {# V0 z5 Z% Y! U4 r  @3 ]7 ^
        out.clear();      
- z) H1 r9 c0 z" J# ?8 O/ z" Y    }9 g1 W& D. b1 P7 k- c7 P- \+ s7 y
    delete[] pBuffer;
" u. p0 N; v8 }0 J9 o0 v( l. A: `    return result;( E# W9 g5 h4 q8 {$ M( D  e" {/ V
}3 `5 H  y0 i3 T/ J$ e7 h

, {4 X' t1 @5 A/**
5 M; a( r3 M5 v- n1 Z*@file   
2 {2 r+ I* f% ~* n* ~- J+ Z7 c*@author Jimmy6 @2 |  |6 {, Z+ L: W: j
*@date   2007.1.16' w0 B4 Y& P" d9 y9 V
*/5 o6 o. K7 P# Q, V/ O& x
#ifndef _UTF8CONV_H_+ n: T1 _( f* ~) }# ]3 v! K' ^
#define _UTF8CONV_H_7 {! E' {! c: ~

' V5 f8 J* M) E7 A3 d
6 o1 s5 Y4 v1 ?) M, s/ V#ifdef WIN32
4 I+ I$ ^" Q" s( j) q. P6 v#include <windows.h>
8 g* e- g, u& e& Z( c1 |#include <winnls.h>
# b+ M7 ~7 a& t2 f3 O: g. D; ?#else% V: C% U: a' }  y* d, P, c
#include <stdio.h>
  H- d) H* f6 R( u1 {  U#include <iconv.h>8 f; C9 G2 S9 h2 a9 \3 F8 z8 e
#endif
6 A3 k# l8 k' B- B, a* L
, Z0 S$ M7 O3 U8 [# N: K#include<string>  G% O1 W9 z- K& p1 P3 _1 c& ~
; ]8 I7 F2 T: y8 P; l; e

0 o7 u$ ]3 V8 m. U8 Q6 T. T: {( mclass UTF8Conv! G, I6 [0 N- G4 G7 k  {
{
5 R1 O9 ]1 w! D; q7 {8 { public:
6 c1 f& }) S( e& s: `$ |& `    static  int codepage(const char* code_page);
3 ~0 K# H; K. q9 P8 u) O4 N1 }- I. M* ^+ c# N, h( I
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;/ j& n/ D. s$ [3 @1 j5 C: O

8 g7 k3 c0 m/ q) o    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
( I, U. [, H+ s2 Y4 {
& x* _9 M# C( k4 |% ?    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;: J( k" K8 j$ ?( B! |6 w
9 ]8 R3 z# R6 K3 r; i
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;
, g* |4 a0 [. ?. [" _! U( r: I) [0 E3 }% q& K1 O
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);4 F/ J0 I$ e* M- Q: r# I. F
9 R0 s: J8 T8 |8 X$ M. |; x
    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);9 o( c/ ?7 D4 x. E" i2 @

$ K) y- o6 `) S/ l1 V0 `/ g    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
5 b) Q2 q* G. A
$ t: p- _! I* T9 x  h* d    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);7 M/ D. ^; H2 \
};7 X' O9 p  I% Y8 }6 N9 Z

5 R! M% r. H! ?- Z2 I, f9 k4 f4 i0 X' n; C

- n( N& _: w3 R( Q: [( j( |  ~
2 R* p6 G% y* X
, j# @/ y- q& C8 K3 w+ k7 L+ c, T  ~# o# x
' y( U0 G! l" _/ |: S; a3 S

4 K+ t3 d1 i  e7 H+ j. ], i7 `2 }: I4 r

; y5 N6 f% e. P+ q" F; p: {( z9 E4 o. v0 d7 o" I! }

# @4 Q  G! G+ n
  f9 Z  J! U8 I( G; e) }+ k8 ?: ^" ^6 O3 V& D9 t0 ^- x

6 z* e# d; c; }; T/ ~8 k* _
! D1 o3 Z9 d# k8 Q5 F" C/ L! c
/ p" c4 G5 j% L+ S1 D6 b

) [, F* ^" i* I3 N% W( @' y/ L/ h* ~0 ]$ [' n$ g8 j
% ?) z5 r4 G! q" Q9 Q/ g
. m1 |+ _: h' n+ @4 r

, {) O, P% H, k  z. B) B( _$ f7 f4 c3 u) O6 W& K0 @4 S$ ]
- g2 U7 W$ e/ j1 I' A

" R1 R% e% c- a( k0 U; z  s' E, }$ c. |: ]7 t( r3 Q7 ]0 t2 D" R' d$ e0 _6 r
# p6 J$ R4 `) e$ x  ~

+ _5 p: M! R. m1 ~( D# F3 F; q#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
0 R0 W' D* Z+ m这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :# C$ ]( ?5 d  O% z
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
* A0 D0 l/ o8 e3 c8 n  @: |$ W. _  Q5 R. D' v: S
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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