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

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

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

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

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

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

[报道]重新报个到,申请个新人成长礼包~
7 i, B* I, ~* \! ]! ?& y8 E/ ^3 w9 B' s1 m
灌个水吧...
+ f' n2 Q0 e8 K( _# S" a6 ^/ g/**
* C: X6 ^1 b, X*@file   
4 H2 s9 z& \8 R8 b" ^*@author Jimmy
" s$ O% ~' k- n7 @% H/ V1 z*@date   2007.1.16) U7 S  I, @) Z6 w- Q  T# g+ o
*/+ \% V4 L# y  C. D' o+ S$ z' r+ y+ r
#include "utf8conv.h"
* q. _* e" L2 m; k& I3 r% D0 V) a1 X/ O/ Z5 D0 p% p3 R% \& i  g

/ |6 j( d8 F. a+ ~7 Z8 t
2 X# x, J5 G* X! g& r; m6 d: sint UTF8Conv::codepage(const char* code_page)
" b* O* }) N% [* o' K" `' ~{   
( C+ P  }4 ?; @8 |0 C#ifdef WIN323 w. d  Y; S% c9 x- T( l) ~
    if(code_page)
6 y/ o: t9 Q  X4 d) i* L3 e    {         
: [2 A. Q8 ^& [2 h3 o        return GetACP();//既竚箇砞
2 z7 M! ]3 N& t+ H5 n    }      
. R9 V6 t. X7 f#endif
3 t, M5 i4 j& v" A    return 950 ;//taiwan acp
/ N2 e- e  P- r) ?- h2 E1 o}
( ~( u& @. l2 D3 I5 a" n. j' W6 f* i' b1 B* r. U

1 c" c6 g; P- |* b+ ]int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)1 D8 |' i! g: Q& c" F2 G" t
{
/ ]7 A( `; u3 R2 t* \6 z#ifdef WIN32
: K6 g+ E# b0 K9 G5 ~- Z    return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
& D6 y6 w) R( y& e#else
7 R+ g, O# I& g* R    size_t result;- Q7 }7 |7 R: ?% |' Q
    iconv_t env;7 }5 k7 F; q+ V3 z
    env = iconv_open("WCHAR_T",code_page);4 }2 X3 R9 `* C. E3 w
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);4 S$ t/ D3 y0 x9 J
    iconv_close(env);
% r9 ], \6 s  Z! b9 v( H    return (int) result;& ?5 u2 m6 q  K! h* O- S
' `6 ?: F* x$ D9 c( D! o
#endif   
7 i1 d; \, N4 Z}7 |& c* @2 ^' G# [
* |6 W! }, W! ~% k* Z; d( ^* `
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out)
  t# ^" p% w4 y! O$ M* H{
: l( u5 ~' N7 T# y/ j    int len = in.length() + 1;; X' Y4 z2 D7 P6 O4 ]
    int result;
0 J/ u0 W) y. A: C/ H) Z    wchar_t* pBuffer = new wchar_t[len];8 W6 v- Y$ M2 m' _' m8 Z& t' d
    memset(pBuffer,0,len*sizeof(wchar_t));3 D. e5 G' L2 I8 y1 y3 u
    result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));2 b( V' w0 K) K3 K) B% s% \
    if(pBuffer >= 0)
. r% C2 d+ Y; u6 V+ M! P( P) _5 y    {
, x) R2 e" ~5 [        out = pBuffer;
1 u% i, ~9 t4 ^) \0 G/ t    }
0 C' G. d5 m+ }4 k    else
: m; Y8 G; n5 u& ~0 w    {
3 l2 C3 C: |# r2 X2 }- e5 m! ^        out.clear();& Q. G( f, x- S2 m; W( \' E1 x
    }0 A& s/ d% R/ H3 z
    delete[] pBuffer;
4 a1 k8 x5 P$ U0 Y4 m    return result;
: C. d' m  S% K3 o5 W/ L}) Q! J" D9 n* f7 K" k

  E* e9 N- a0 Qint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)& g+ W2 h# F1 F6 K( P' s+ x
{; w2 l. a4 Y5 Z) s. V
#ifdef WIN32
: {( }/ Y( H. M7 K* F6 @: ~7 E    BOOL use_def_char;
! Y* @9 h1 `( p( G( ~; f; Y) z    use_def_char = FALSE;
  X" j, I# [) h    return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);0 W+ X$ f7 b2 D% m% p
#else
! g5 W' q$ x9 O/ G7 [+ X    size_t result;
) u! e; q6 n2 D6 @- }+ `& h    iconv_t env;& |8 A2 l+ G: S& T
    env = iconv_open(code_page,"WCHAR_T");. }" K6 Q' O" z1 {7 L* X! N- s
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);0 Q. X4 J( |' J+ y
    iconv_close(env);
# R! L9 H' n1 E3 b3 R4 p. c    return (int) result;
$ H: {0 G  A1 X7 u' v9 r4 N#endif   
9 P# K4 z- q3 f4 Y, B( B$ \}  x6 H) g% h# a

& D% O/ X0 W) M6 hint UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
% @& L  W) w% }" X: y3 Q: H8 ]9 Y{- d5 q( `. ?. D1 j. s6 V. E7 ]. u8 y
    int len = in.length() + 1;' a9 K- v7 r+ A5 X; a' \0 J; n
    int result;4 i6 E4 H8 L( @  k2 T
    char* pBuffer = new char[len*3];
, w4 K, o0 x. A    memset(pBuffer,0,len*3);. U/ c  Y: d4 I- i- W
    result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
8 d" N& a5 g: u7 [3 Y' S6 L    if(result >= 0). q6 W4 j) N! l/ p
    {  
. |3 ]& _/ a( Y5 ^        out = pBuffer;
, A3 ~1 q5 C% c! F8 @4 U' @    }
$ v! N+ D# p3 Y7 V& s& G' V# l    else! n: Q- G2 {. D4 ]
    {
4 w+ U+ A3 r1 A  z: C- j0 p. z        out = "";
9 p4 m( {$ o$ z. V  u% ?    }' L, _* {* c* H% G) b/ `
    delete[] pBuffer;
3 ?4 e9 e2 u  o! ^/ [    return result;+ m: F4 V9 d: }& s7 _( W
}
& y  ^/ l" h2 j( x
. g4 u/ V+ F. Q% \* |! |6 [( x% {3 aint UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)! v" Z! r' V5 ^' e
{, j* }& r# y; {' e: k
#ifdef WIN32
9 W; F- g4 W: |/ e% D2 a: s! S
6 ?( D; y% b; r) J    BOOL use_def_char;
9 L* c1 y5 z: |' M- l    use_def_char = FALSE;
9 r, e+ q) |% T& P    return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);; n( b* Z7 R- J2 S
#else
& x! `4 @  [1 @% U0 D- R6 j: f    size_t result;* O7 a- h8 [+ F$ L/ s; @8 X, g
    iconv_t env;
$ F7 k( m. P. {* g: S$ o% x' h, T. j; F# X7 @- h7 f7 E0 @8 T6 ]5 Q& d
    env = iconv_open("UTF8","WCHAR_T");; [" i; w( N) O2 a$ r  ?$ ^8 i( Z
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);     
9 p+ Z5 l' r# p7 [- ?4 h    iconv_close(env);: ~) @/ g" B4 l
    return (int) result;( y" T% {$ v9 H' o, H! T7 C* [
#endif
. B( t2 {" W$ t* ^; y* h}; t8 t" y- }6 ^+ n

. P0 O( [/ x' {2 mint UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out); H4 _0 M$ d5 F6 I; N2 s
{
) i. u6 {  k, B" R& j) z    int len = in.length() + 1;: [# v, Q# p: n5 z. S! A# T+ a
    int result;
6 L* z# \3 G9 v! [! F    char* pBuffer = new char[len*3];& m5 `/ R' G) _$ v
    memset(pBuffer,0,len*3);              6 a6 B4 ~) T' o; l0 Y
    result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);           " I! K/ N0 m  |& @2 M8 \( [+ P
    if(result >= 0)
7 ^4 i* x: f7 ~6 X    {
' b8 B: S5 x: X' q        out = pBuffer;
3 \+ [* L$ G$ ^4 i: P+ b    }
  a. p3 P5 [4 u' N+ d, [    else
5 i: r) m$ p/ {, b% B, y# ~    {
7 x* P* {4 Q* R3 a, y4 B, t- D        out = "";* f( u# O$ u$ M3 z8 |
    }8 O. T( J2 v" j/ J) u
    delete[] pBuffer;
. \5 u" B1 y6 j! K5 S7 ^" ]    return result;0 U4 i) U* {2 S; A3 R4 R7 N
}$ ^! ^+ J: u9 L
5 c+ A, s7 l) E3 |: p$ A; i
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)0 e6 K* O: @0 G7 _6 g+ r2 T5 i3 D* b" l
{
# `+ `4 T5 S/ }8 w( K#ifdef WIN32
) F. ~. D6 O" m8 B5 H2 u    return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
1 n" o5 {( \* b$ ^5 ?9 E6 R' {#else& a  e) ^9 g  l6 f$ K
    size_t result;' \% `% }% J. B- E, f+ b
    iconv_t env;# _2 |" d! I4 G
    env = iconv_open("WCHAR_T","UTF8");* k" [7 ?! L9 D2 _1 I9 s) y, o
    result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);' L' F' f) K% h5 a  R/ X4 g& G. a, C
    iconv_close(env);! F3 I% i% W3 I  V" a
    return (int) result;5 y0 ^/ R' y# ?9 C
#endif
% Y  l" l( n' r5 j( k0 P+ `}% U; ?  }7 X  H; N0 n

6 }* w* y) T& U! D/ Eint UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)7 Z; f8 O7 Q, d' u
{
* D. g8 A$ i& m6 [' {$ C    int len = in.length() + 1;) ^& p! _4 R9 }. m3 |+ X
    int result;4 V$ S7 {$ ]8 w  b* O, e) l8 D
    //wstring temp;
8 C8 e* b9 [* W0 p8 \  u+ f    wchar_t* pBuffer = new wchar_t[len];: W( {' s* ~) o: G
    memset(pBuffer,0,len*sizeof(wchar_t));5 ]  z: ?9 [/ g5 s1 d2 F  u- G( I5 ]
    result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
  \: M1 U& i0 D8 ~: b# B4 \    //printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));5 E/ v6 J1 {. s. C" U- c
    if(result >= 0)2 |# K2 F3 z  {9 L3 u
    {
$ T5 T& V0 ]6 M, O/ E9 j3 \4 |        out = pBuffer;* y; y' s+ B3 F
    }
% B% L' h% T( P& S7 Q3 i    else! B# ?0 i( v# z+ I
    {
8 g9 n2 v- _' i% j. j( w' k9 m        out.clear();      
. a% b, K3 }6 [4 `  z8 k    }
6 O$ g1 o1 N+ ]% I/ A    delete[] pBuffer;7 Z4 G+ h7 g; I4 o+ N- A' ^* Q4 q
    return result;  V' f2 `/ }0 z2 L# R# c. X
}
# ]' \+ n% W; p+ M7 d  U  T5 H* A
1 [$ t* V3 _# n/**
1 ?/ J: w* o5 T( r*@file   # U- W# \' G- Z" n7 }
*@author Jimmy6 w! U9 L: w8 M# Y" ]* T
*@date   2007.1.16& h4 z! Q- O* M9 }4 Y. k
*/+ j4 r! a1 C1 x5 ?& k/ Y- E. ]
#ifndef _UTF8CONV_H_( g, v! H9 r; Y; F/ P
#define _UTF8CONV_H_
4 L# F; S5 u, B! R
0 ]$ x! L( K. j8 ?0 ^4 e9 U$ t
4 `: @4 I$ U( e6 M+ P; g& I#ifdef WIN32
# T7 g9 V* {+ h# `#include <windows.h>
0 G, N0 K8 C7 t, k3 d#include <winnls.h>
% I. S- Y# ^8 u# o3 b+ @& b! U9 y#else
& C# v' p& r9 q- `#include <stdio.h>
& k2 z' S1 y  M* e9 v: m& M5 r2 g8 w#include <iconv.h>
% I' y) |. q3 c* C#endif
! R5 t1 J8 N! v  ^4 w; d0 I1 r6 Z+ h; ]
#include<string>5 z9 ^0 f9 ~( D+ `0 q" E/ v

  r7 i) B' V1 }3 }; d4 _5 U2 w0 M: b  Q' a+ k" F
class UTF8Conv
! z$ r7 G& C: x' K$ p, b# z2 Q {/ J: R8 _. J/ ]1 H+ B1 J& Y) B* t
public:
7 i6 C3 I' L) I0 Y+ K  b    static  int codepage(const char* code_page);
$ O0 M) M9 O, J. f
0 Z; h5 i8 G1 l: [9 W    static  int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;; M% W: ]: R7 b% K2 Y& r, v( i, d
- G& x4 k% X; N& G: N# C3 e
    static  int dbcs2wchar(const char* code_page,/*in*/const std::string&  in,/*out*/std::wstring& out);
5 i6 N* q1 |. V% N
6 W5 f. q. Q5 j! [: h  z    static  int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
% [+ u7 K' `! E/ g) R% O7 k  y' o4 K9 `- ?5 T3 M
    static  int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)   ;* L& Q( u5 b! `

  I# h& s3 m$ P0 D    static  int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);8 L( p# b2 d- Q. _2 L6 {

+ N5 \2 @' J9 D7 Z    static  int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);9 ?4 p/ X0 K- Q* q6 C/ H8 s2 C
+ q+ }( a2 w7 q0 m
    static  int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);% O1 O% x6 k' o: f" O  u6 V0 {5 d
9 E: R* C4 T  p1 F6 t
    static  int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
+ r5 c/ T  z( k6 ~( G& t};3 A; |5 g  i  a' X0 @

5 R8 L' I( V6 f/ l3 r7 V' R; w6 E/ x; A: e7 s

5 C) @! Y; ~( f6 t. [4 ]) L0 K# s' b* d6 }$ l7 i" w- e

" g6 l* J* d3 Z
" K) h0 i, T& c0 G: J$ T" c% B& ^  t" c- o
: |. L. W6 V  G# P8 H
0 ^0 H; x  _& O9 k
, D2 u* ]- r5 H

( k* G; y" `( n# U% ^, X5 _3 V: r5 k. z0 ?
- Q4 C( w; ]0 N; \' u7 Y

. J3 `6 o% l, ^) E& j9 d6 e* p
6 q5 V$ \2 z  k# a+ ^- ]. J) B
/ c& k( T5 S5 |" Z8 [8 @! C3 q
9 i  H* c2 _  H( j, r7 V6 t
; z% b, W" g" u5 f2 a' ?# N7 v5 q# G, L
. B/ F! Q# x6 l

0 q  D& _" d3 U- ~8 Z$ \0 k/ J3 v8 z" X

; ~! Z* s8 {" }0 I
: U" i# b6 o0 z. x; P- n
# A5 |6 e% T/ Q& m3 e# ~+ g% U' w( J
2 @: `. M0 M/ m$ M
7 X6 X, |8 G$ r% b, w+ R8 O3 A* i( b+ [( B& s
4 r. ]& F' `. w9 q& r2 p
#endif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

5#
 楼主| 发表于 2009-4-24 00:33 | 只看该作者
引用第2楼caesarzx于2009-04-23 21:11发表的  :
6 ~0 q( l( {/ e3 ^但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~- i! d1 ?+ }& ~+ O8 R3 Y5 \" B7 H
; T/ }& r) m, V4 ]1 J7 |" l" k( f
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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