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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~, ~* L  ]3 s+ D4 B
# l- w# [# x4 J9 o+ Z! b! l
灌个水吧...
9 V7 X, e0 v0 s: [) Y3 t' h6 |/**% H& d$ o4 h( I# c$ w
*@file   
' r/ M5 h! c0 c+ T% \9 ?3 q+ ~*@author Jimmy
& O; z; h$ ~3 S. Z*@date   2007.1.16
/ ]1 q4 \' s. f7 ]9 [*/
3 f( C" }5 A, ]+ I* o( o6 j#include "utf8conv.h"
2 ^6 t  F9 u" |& k7 H1 n7 a5 ]! h7 g8 \

; v% w( g3 f! \' k' o
7 W) k# y6 t4 m+ ?( A9 G7 P5 sint UTF8Conv::codepage(const char* code_page)6 ^+ Y* z+ T  A& K8 @
{   
8 l/ c0 j5 O; p* S# k- U#ifdef WIN32% V3 X  t% D8 s7 B! P0 ~
    if(code_page); b3 K1 H- H9 }: \- K$ f) ~
    {         
5 W) f! F% @* r+ I7 `        return GetACP();//既竚箇砞1 J5 U7 L/ x7 f
    }      " X" L4 m- f6 [- V* L4 s; a
#endif3 R+ {0 j6 V- K2 l# T
    return 950 ;//taiwan acp
+ \; q2 P! \3 F4 W. s& M" _}+ ]2 i* r+ m, Q% o: l  K3 S5 h& ^3 V: I

$ p, g; Z" e/ }8 Z. Q/ W- V/ M  r/ O9 x2 i0 U
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)8 h, }9 z5 S. V9 V2 \( i6 q3 K
{
4 W+ f+ n3 S8 m' L" d; y#ifdef WIN32
; E- i, P7 B8 Y' T    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
3 B# E4 t# z, p: O  O6 `5 o#else % D: W1 t2 G0 x! [
    size_t result;& a% a2 ?2 s! w& `2 I. x- b& E& u
    iconv_t env;) \- s. G. e/ C5 k8 {' w. v
    env = iconv_open("WCHAR_T",code_page);
. K" {" T$ ^3 H, j6 I3 `5 ]. `: p    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
+ J- C9 m- M* q/ S1 g0 z    iconv_close(env);
/ v; r  D9 C* V    return (int) result;6 R" b5 F  K5 L/ C
* @4 T* ?- ]) z+ S$ q* V) U7 f( k
#endif    1 i( p# z+ V% f- g. w  M7 }/ `- |
}: V/ K8 x6 [( V- d$ d1 z9 x

0 ]4 {& [5 Y1 q: u. eint UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)2 z" f/ q9 v, R
{
* s  {' }- a5 A; A. }, W- S5 ]" E+ n    int len = in.length() + 1;
4 v- c6 W1 T7 c5 o) |    int result;
' Z5 P) i, o- V* ]    wchar_t* pBuffer = new wchar_t[len];
+ g4 c  k8 ?. i  N- `    memset(pBuffer,0,len*sizeof(wchar_t));
& l! C1 F. j2 C2 l+ v: A    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));0 u  A( _) v6 f7 K7 \) i6 \& ~
    if(pBuffer >= 0)
8 Q7 Z- w5 }1 y$ u9 @    {; g$ z' Z5 s( p2 D% M
        out = pBuffer;
- [1 _* v( E8 B, V/ }    }
- s2 D. U  o) R6 O    else! ?! E2 ~3 P  E# l
    {
: h, i, g' d- s  j  j        out.clear();$ B5 I. f+ c6 L$ m! M* A6 e2 X- [
    }# l' p4 a. c2 g% S, f. i# r! W' h
    delete[] pBuffer;5 i: z3 Z7 ~7 b9 \% A
    return result;  H% @! v* L$ D: F9 t/ g
}
! o- Q% \/ H4 w% D5 T' c
  i; N6 x! z/ D! I2 G+ _int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
5 o+ @& M& E- E1 Z{' d# h+ Y' a7 V  H" P" W5 J4 h2 N3 X
#ifdef WIN32: U  D' N, ?' }" Z! _; C
    BOOL use_def_char;
- V6 a- [: A/ `( ?7 m; l4 U    use_def_char = FALSE;
; r( Q& V* E1 K3 {    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
2 _# H) ?6 X. L2 L9 ?4 |#else' \: {1 n+ i, J! B( s' w
    size_t result;
' b5 X% D  s( U    iconv_t env;+ d  b; R) y. d0 I! \4 B. A9 Y
    env = iconv_open(code_page,"WCHAR_T");
5 S5 _$ W/ q* S( o% V    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);- J( v& c$ o$ ^2 K( L
    iconv_close(env);
% d% k( ?  R3 Y) U% I    return (int) result;
3 B, i0 m" _5 w  d6 ?#endif   & \  Z4 V6 T! o3 d* q" R$ {# U
}0 f6 w6 }& S. h6 H

! a8 l& U# b  v- q6 F. m1 [* sint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
% `6 `! W0 K6 A" R{
+ V- }$ x' m* L& I/ W' [+ o    int len = in.length() + 1;
. }- {- A. L/ z, @, p    int result;
& L$ J4 p8 w6 l9 V    char* pBuffer = new char[len*3];- V# J0 E1 K/ n( f
    memset(pBuffer,0,len*3);! g0 P2 S- }8 i# R5 _  z% J, k0 o' H
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);7 F! T) S* F8 R) t
    if(result >= 0)$ \6 q' t5 i$ V$ r0 w/ H4 C
    {  % f+ r4 E0 a! S
        out = pBuffer;
% m! B1 l! U. P3 @    }
* q  a+ T! G3 G0 [+ M    else4 T8 P: F! K2 U3 T9 j" E: D% Q
    {, p% O! G. q( S* y! ~% \& [
        out = "";. t! s4 ?* O, w
    }
9 w: G5 ~+ a% A    delete[] pBuffer;- z' J# x/ h6 O
    return result;
/ y7 ]+ U9 p& ]8 u3 B}( ?6 B- c3 j% U/ ?

+ M7 i6 B, `% p4 X% ?( @int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)2 }+ ^4 ]( @0 Q- \
{; j" z" r! I6 ]) _8 k7 B
#ifdef WIN32- n' y( F3 G0 M- L  p2 P

. ~3 H1 m( J2 o# Y+ X2 f    BOOL use_def_char;  K  P# o, j# S) {, S. z
    use_def_char = FALSE;. x6 i6 o5 x, Y, [' G1 p* `: E
    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
1 ^" \1 v( Z; a% m2 y8 J4 a* t#else
/ ]' Z; A1 j. f    size_t result;
5 C6 h7 V/ m- Q3 h9 q/ Q# [1 \    iconv_t env;
$ N4 A# g- t* ?/ Q# l& }. t: B% a* y: I4 W; c  t
    env = iconv_open("UTF8","WCHAR_T");
2 f& G2 c0 E1 O4 T/ A& t    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
- p; E9 I0 R/ t! u# g+ K% U    iconv_close(env);8 ]! h1 w/ w. f; R$ N
    return (int) result;6 H; p( ^1 Z# O6 J* ^" [9 [/ b
#endif/ ], m2 h- c' r
}
6 [3 P& o2 F7 S* F/ p
; X' r/ L8 {3 U$ S# ]( `6 [7 xint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)8 H# A; \4 l$ r+ [% R0 ~6 ^( F
{2 V4 V* s' e3 ?3 F  N
    int len = in.length() + 1;7 b9 C# {: ]4 g% ?8 w9 p) I
    int result;$ t& g) q: Q8 z2 }4 M
    char* pBuffer = new char[len*3];
2 C9 N# T# d) A    memset(pBuffer,0,len*3);              # t3 S; Y! z- y5 _, j+ @5 s" v
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           
5 K+ j  ~: L* H% E    if(result >= 0)- X3 H& ]$ `, m
    {
. M7 A. I" c  M+ C+ t$ ?7 m) n        out = pBuffer;& N. T4 a) X; N# Q8 K) e; V
    }
! s6 m6 k! w: B% y' ~/ A: i; _    else
0 |+ A+ |( J; s# |) \    {6 D! I+ o" ?4 f: |( e5 a! T
        out = "";
: T- Q# p% `+ N& q: X    }
% ?  p  B1 X$ d" B- z# M    delete[] pBuffer;
' l4 ]/ v0 t+ l* k. h# P5 `    return result;4 p9 w) M* {8 F% b! x! F
}+ ?, Y9 v. G' l* A
3 F7 [( U  [5 v, j  L. V0 U. @
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
7 M6 b; }$ L: [/ J: x{6 ]( N  D6 I( v  Z6 O. \1 q+ p
#ifdef WIN32
* h9 W5 p1 N/ {, \! e! m    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
2 N% E% R7 G. h& ]( p! V#else
0 U: `3 y- S$ J: Y3 M( Y  E' \( x    size_t result;
3 S: _3 Q* U1 L* r* n    iconv_t env;
- S9 g7 Y+ }$ d7 z9 b6 Q' Y    env = iconv_open("WCHAR_T","UTF8");
9 c/ s) E5 t, b, ]# T1 Q    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);' D3 T4 y% ~( e
    iconv_close(env);3 `, j, `* A# H1 E* m( X: _/ d
    return (int) result;3 L) M3 K' J3 k3 b9 l7 _
#endif9 E% x6 S. s' H. c- m, n' ?
}
$ z6 g8 h3 P$ E, C* i/ r7 P3 S2 X' o* O- x9 d) R6 m/ N
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)) I* a6 @# {0 A6 t# U" y
{
, D  P5 C$ j9 c4 v    int len = in.length() + 1;, B: O  h2 Y& d( x4 k3 U
    int result;
7 C# w- u! E3 g% W    //wstring temp;! A' @3 u& I: u" `
    wchar_t* pBuffer = new wchar_t[len];" c6 Q9 w; u% v, o% p9 N
    memset(pBuffer,0,len*sizeof(wchar_t));
& j. C( g, j9 P* [# E+ o' y6 ?; s    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
- _( {2 j# p& t/ s    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));. Q0 y1 B$ p' g+ T
    if(result >= 0)  D# D# g! }. \4 B0 l3 p4 |
    {
- C( r& E6 U6 l, W; t$ h9 K( D        out = pBuffer;7 u9 J* U5 b; \: d
    }
. V9 `+ @  P! e9 \' `& h9 f! R    else
4 I* G* T, Z1 S$ e$ e" o8 g5 k    {8 d" z6 k0 Y2 t, r$ m) h
        out.clear();      
/ w  i6 t) n, K# o# ?0 W, O    }
& F) n# W; w, o" q2 o  _/ V    delete[] pBuffer;4 U7 R9 W: K5 m: O
    return result;
/ o& @. |. ]5 U  n2 M}- W+ r) t, V( W0 \4 j( L
7 M' h! e5 q# B0 ~% z
/**  M: w& z) b: |. f! @* z3 H: [+ L
*@file   1 B/ j6 r  x/ d, g
*@author Jimmy; w. Z: X! t) U5 s/ `9 U
*@date   2007.1.16) m& K% ?$ J6 Z0 z3 X( S
*/
' ^  y, W5 t* P) k#ifndef _UTF8CONV_H_
6 a0 \( i1 {$ [6 B2 J+ I#define _UTF8CONV_H_
6 n( ?/ a/ @4 `* @1 P) `% G1 Q* y6 e  G! R/ @

  z9 E! e* u% n+ I1 _  C#ifdef WIN32
# ~8 q  v+ ^' @1 C8 m#include <windows.h>$ d7 a" o; q5 o8 t% U1 e& K/ {
#include <winnls.h>
$ p' q6 W: u7 B( j1 Z6 a#else
6 R4 u, |3 u( V$ O+ {#include <stdio.h>
; F- @) R, \# c+ B5 X" ]$ u3 o#include <iconv.h>3 B% v) N, ?7 L: H# k
#endif8 r" X( ~0 \5 m; Y, a/ h& P( T

% k! s" h0 G" i. ]5 K#include<string>! N+ ?) K& j9 j* d# k0 D1 E7 E
& d4 w. q$ x) C; I5 c; u* l( c% u/ s
$ a# p: g: Y# J% J
class UTF8Conv* A, V( s" N1 [% k1 M3 K
{8 T# r4 s. J  R/ Q( v  {
public:# R& W" x0 p/ A: a! h, D
    static  int codepage(const char* code_page);: ]$ l! a' g, E4 x' R: D  b
8 [, v2 i0 _; ^; N& D9 x( w
    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;* P4 M: t9 k6 C+ X4 U
6 r, a9 a! f/ J3 U! Y8 p3 ?( `
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
6 j9 \! l4 E: A3 U, o$ |
& S. B# B8 w0 L/ y) Q! k    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
! x. i) y: K! J* m$ B4 [
% v$ ?/ w/ h/ F+ p$ E) T    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;% Q7 W- Z) B0 Y8 |, \$ t
+ l( C  g1 F$ K- h  ^
    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);; j  D) j# P) ^0 D! y5 k# T. b* e

; R/ _4 |0 W! T9 o% ^    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
0 U5 L; x5 d9 V) z. X& q8 n0 k# Q: L3 J* V3 X0 k# x' D! ?' e
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);+ J/ c: B1 J' B$ p  g

/ {3 r( {- C: s, S    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
8 c- ^/ m* G. _, V};; e3 G7 _5 u4 ?2 y) w

3 e( ?% ~8 A5 ^# {3 O$ u# Q1 V' p
7 C2 K/ m; [. ]. p: ~: Y' ]0 L2 i* s: p9 P) g  _" T' j  g. h
1 e) g* W* K5 y" E
& {. o9 c2 e) {: u

, _5 N* A( p4 R8 ^4 v% L9 q, ^5 Y+ I5 g2 l- u( s6 f

- Q" @5 C1 H& u: k( b
0 `& M4 L' O# p: m4 t. z" n; x! u" F. \- [" Q1 |; P. q

& }: k; {( p' y( K6 ~( Z/ Y! s# b# z+ R% h

3 G, f7 k# Z( Y: Z7 j/ j4 m9 M. N0 q1 Q; [
2 ?0 _3 E& k% ?
+ b8 x0 S! r+ [3 j6 r; t  N
: t8 m8 `8 X% |3 j. c$ m* Z
) u; ~8 f. J6 M* J

* L2 z# ?' E$ c* X, W4 I
; i4 [0 F8 e5 z+ K+ E/ I, a6 `4 H/ d: T! T, h+ w

2 |8 O; f3 k' U9 u+ ~+ |* W( I# g' R* G  @' U; T  g

. C2 M- x+ M5 Q2 E4 Z5 k) @$ U
! ?* [2 s2 r7 ~
4 ~% t. ?/ f' B- W- [1 ]" @
" A/ m& w: {! a
, |8 G6 S- ]  k) G/ z  G2 [4 B$ B( v% [
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

地板
发表于 2009-4-23 21:29 | 只看该作者
版主楼主忒不厚道了
' L: S5 ^8 l1 z! V* H这样的话我要申请平民新人年度成长超级大礼包 [s:2]
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
/ t4 T/ |- X% J$ }' j& Z但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~; u  \0 i3 a7 J! ?

. S5 D7 M$ g% V2 ~( u% kand 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
回复 支持 反对

使用道具 举报

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

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