冒险解谜游戏中文网 ChinaAVG
标题:
[报道]重新报个到,申请个新人成长礼包~
[打印本页]
作者:
firendless
时间:
2009-4-23 19:44
标题:
[报道]重新报个到,申请个新人成长礼包~
[报道]重新报个到,申请个新人成长礼包~
{9 T, f; y# W8 s c
! I7 P. p6 d* D3 S: E) e
灌个水吧...
5 f# b) j/ V1 h( P
/**
; W& S5 n7 E7 o- W* P% m
*@file
3 x6 B& |! M2 h, P
*@author Jimmy
B1 T) @: [8 d7 K. i, P4 `
*@date 2007.1.16
2 D2 r1 R. w* ~0 P+ @
*/
" c4 U4 u2 r- y8 w# @
#include "utf8conv.h"
- S6 `# {$ z) w" u* _( I+ k) T
8 A8 k# ^8 G" L e$ w, e
2 U! s2 J- Z$ @+ X9 n& I
' R- ^+ k z# I4 m" M3 A+ d
int UTF8Conv::codepage(const char* code_page)
6 y' l, L5 M( s9 X' Q% P* [& l. x. l
{
# U/ X6 W, A4 [1 O. \/ @
#ifdef WIN32
( t! I% n% B9 t s# _4 j
if(code_page)
! b0 D6 s5 U3 e+ G2 u; z
{
2 F! U& R. Y5 l& g v2 z- K) [) H
return GetACP();//既竚箇砞
8 Q4 F8 `& g: N0 ]( x
}
* H3 ~: z% |( W9 O C9 N! T- D
#endif
6 B$ M8 [* }* e) [7 g! W$ m
return 950 ;//taiwan acp
" W6 l0 R" S B' a
}
9 ~9 I+ [" Q, i
. [ u# G4 v o
9 Y, k$ P4 R4 U5 f+ Z
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
$ q/ i3 I1 I9 @( T
{
, r& u& K' s6 w2 {5 v" n
#ifdef WIN32
$ a6 z9 A& ?5 |
return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
) a/ i2 ?( M* W0 Y B
#else
0 }; \/ }& E( d- u6 {
size_t result;
. u4 `6 p. Q0 Q2 \
iconv_t env;
4 I; [3 {! N; q* [& Z
env = iconv_open("WCHAR_T",code_page);
" C0 \7 X( L9 N: q& j) m, Y& R$ ^8 f
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
% M$ T3 @* M! q3 b: [: J* _" x
iconv_close(env);
+ `, I3 I6 ^- H( [
return (int) result;
! H2 d4 g4 z# F$ S
. w/ f& s* D5 v0 Z% c+ j4 ]
#endif
; N1 J* z7 ^% G. W7 P e
}
* Y3 W6 G& T0 y J% V I& e: [
( Y7 P- r y2 p3 n+ F& {
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string& in,/*out*/std::wstring& out)
3 f- Z7 `; M% x8 W* a
{
6 \, ~* \5 t4 A) \ ~- x/ f# R
int len = in.length() + 1;
M8 N9 W/ K4 b- [; p k8 s0 N
int result;
3 m! D9 G5 d. t0 i
wchar_t* pBuffer = new wchar_t[len];
5 a* z- D8 w" e& r4 B
memset(pBuffer,0,len*sizeof(wchar_t));
6 e0 N2 O+ _' z) r- M! B' v$ [
result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
1 |% o0 V U/ x. Y
if(pBuffer >= 0)
& v- m" D% E0 v0 C2 J0 a( G7 N' N+ {
{
+ _3 X& r) e5 ]& \- \0 P. S
out = pBuffer;
9 H0 q8 b- ^( y3 W) G
}
9 }; T" m8 E: r3 r
else
5 p" ]7 `2 P7 c# N5 B6 [) r1 l
{
7 |4 O* E' N8 _
out.clear();
4 _# }# K0 P& t, ?; B' L
}
9 C( u, U! I/ I$ z2 H4 S' R( ]
delete[] pBuffer;
. Y6 p* U# v- i: N
return result;
) R1 P# Z& G4 H2 n( E
}
6 h( _# \% I- P; D7 ]4 g. z
0 X- M) ? H8 r' R8 {/ J3 X; ~ [( j
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
1 l0 Q0 @0 P1 f$ {- i
{
: g$ V) ^4 j0 P
#ifdef WIN32
) ?+ e- V" O/ o8 w
BOOL use_def_char;
1 j0 C w3 n1 c# d1 x3 e s
use_def_char = FALSE;
+ t6 B. t/ q% I( I
return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
# g8 N6 e) a# A) T
#else
; Q6 q. n4 r% L u0 k: [9 r4 o- r$ s; A+ I
size_t result;
) Y, N) [% [- D3 ~
iconv_t env;
! S+ F1 t- w- S' b6 M; M
env = iconv_open(code_page,"WCHAR_T");
. f! `6 x2 H$ a+ B: C L
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
[; l: n7 G, s+ }# W; @
iconv_close(env);
# j( a' |& u9 s/ ~" j/ v- o2 }. ~
return (int) result;
! t9 Z, c. j; a3 R' M8 e( o( s |8 E
#endif
6 T, _* I- ^/ @& w' \
}
: J2 R9 t0 J) t4 O4 |% Y
" ^1 s# l7 I$ k
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
. |6 u$ S* @- B
{
# q8 }7 f6 j5 J( w( Q& Q, F
int len = in.length() + 1;
, U' o( m0 L* U1 d! K
int result;
- i1 Y3 n! E0 i& I
char* pBuffer = new char[len*3];
4 ]2 s) X. n1 f# ^
memset(pBuffer,0,len*3);
+ b( v: `. \' J M5 d0 X. E
result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
3 V) S) O# q! O4 f4 n( S2 E- O
if(result >= 0)
5 L2 o+ \0 b$ O5 v3 F0 _
{
% h4 ~1 A( V% j/ ^4 g
out = pBuffer;
5 s: ]6 d/ G, L; N- q% I( @
}
' j) P" ^+ Y: \6 |, d' m8 h
else
" o1 k# `1 ^6 v1 B% A
{
7 D/ L% T1 [; t4 ]0 G$ |
out = "";
( N! b& O' p! y6 j8 a) _
}
1 M' \- P5 w5 f
delete[] pBuffer;
( |: R9 B7 b$ j7 w! J G/ V
return result;
" f+ g8 H5 ^, H! L! U
}
$ h7 |& _$ C' _9 E p# i
3 O. u+ q: j+ }$ H
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
4 ~; \5 A- X1 Y& s
{
2 p3 R K$ n9 j6 t1 [
#ifdef WIN32
. U" j$ [; s/ G6 z3 Q7 q
6 Z, \, [( s1 X8 S F3 U: o9 O3 M' N
BOOL use_def_char;
3 y' \( G5 x x1 K4 [/ x) u% |
use_def_char = FALSE;
' o" [$ V+ d; [
return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
' f* S x4 [* B6 l
#else
: B" z4 n- \9 k B" ]
size_t result;
/ Z: X0 o h2 C- ~' ~
iconv_t env;
. X. P* @' Z+ R$ b& N
5 y2 l9 m; Z+ z& o" y
env = iconv_open("UTF8","WCHAR_T");
& c H- ^* y* p& B3 w
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
2 o% N5 P E8 h# J% j. ?. P8 z
iconv_close(env);
$ m& w3 @8 l- h n" i2 Y, j, D
return (int) result;
' W# B9 s {. n
#endif
% F" u. j4 }$ e- z8 A% K6 I
}
" L! i# b& o+ j- E( J- @; r
/ |) H$ f4 M: v2 j+ f0 I
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
7 u' X3 } K0 |/ G
{
8 ?% t6 ?2 y% J) N
int len = in.length() + 1;
$ @/ ?5 O) K/ B* }8 s7 U
int result;
/ ~; B0 B3 P1 Y1 G* Y5 \- N
char* pBuffer = new char[len*3];
0 }+ _$ d6 W E4 H' |
memset(pBuffer,0,len*3);
1 E1 y8 U( @8 z( G% X; J
result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
- j% }! K5 j* | d
if(result >= 0)
" _/ d/ R6 q$ H6 r8 P0 R; x
{
! `: ^3 G4 `: a
out = pBuffer;
: E( Z8 j0 R$ q/ i H5 _, _
}
/ |' \/ \: r% m% P" {8 ^
else
% ~; Q2 B, K' q. P7 T. P
{
! ~3 U3 G/ G. W* K/ o
out = "";
' e# |2 @0 n" W9 c. ~
}
: Z+ U- ~5 N8 n( F7 z
delete[] pBuffer;
% _- I# J$ p$ x0 U7 U
return result;
# y2 G8 \6 X1 E% K% ?
}
% e" z5 O+ ~) [" h" E: f8 v
6 j+ f# R& _) V0 _
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
+ {6 T& I0 n9 ]' g" G1 X
{
9 u# a: [5 M( R% G
#ifdef WIN32
- l& q! g- n# p9 }% ]+ J/ p
return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
" m" K- P/ \% }8 n Y3 D
#else
+ o1 i( b) ? I ?
size_t result;
2 k/ \& B/ J; W# t4 l
iconv_t env;
* b. V& [0 V4 R! a* B2 a) v
env = iconv_open("WCHAR_T","UTF8");
% X$ k$ b! ?. r8 T: W! w
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
- f- M) t0 ?" } j4 `
iconv_close(env);
6 x/ F% i: {# C3 r" c4 x& C
return (int) result;
6 n' p6 U3 [" g7 W) p5 ^
#endif
0 _$ b2 i+ }4 H. u2 a4 T
}
# e' K& s% Z0 s# I5 y
- _* n. G2 |$ G
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
+ B! V& {% `! W+ Y9 @
{
f2 I/ k9 j2 A! F+ \( a2 X
int len = in.length() + 1;
9 _; N! d |6 o1 [
int result;
3 X& @& a, ?% U2 k% T
//wstring temp;
4 B$ Q* m3 z) s$ j- U7 b; I
wchar_t* pBuffer = new wchar_t[len];
. k: i" }# o& Y1 }3 U
memset(pBuffer,0,len*sizeof(wchar_t));
9 a/ C1 `, t3 ^2 _- q
result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
$ M" N1 U) B* g9 z: Z
//printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
& B1 g/ X/ M# H
if(result >= 0)
( {: b( L$ Z/ G
{
. _3 F% {) h) [' f4 c7 a9 n1 @" i
out = pBuffer;
9 F2 ^& s# @" p
}
2 e% x; m. ?3 x. ^: j& a
else
# y# o9 j; Z! r& I
{
* v& x- F1 [- i
out.clear();
% E; C; ^ Q' j5 V
}
6 {+ b2 d: D, U2 U& w4 `# x, m
delete[] pBuffer;
' |, V/ e' n/ C, w! J' E. V3 n
return result;
. s; f. q7 P( K$ N. J7 V3 o% H
}
- \7 L; h" @! k$ P& [1 V
" A8 P! C, ^. o! y1 S0 ]: v6 U' d: F
/**
) {* m7 A! r: U1 r
*@file
+ f; u0 r/ R) e8 F6 |5 m
*@author Jimmy
5 K6 V9 H( w l9 N( U
*@date 2007.1.16
: y9 J# x4 n, K- q [5 v
*/
/ ^8 z1 Y" Q, H( o" s
#ifndef _UTF8CONV_H_
0 q8 ~5 b* j1 \5 R+ b4 ^
#define _UTF8CONV_H_
7 s3 @- b' o& w3 V& h0 D$ z, c
8 r" g1 n& t5 F
3 f* O6 m! K) |3 p J
#ifdef WIN32
* j9 m2 v1 V" ]7 g; i) S: I/ d$ t
#include <windows.h>
# E) u6 o/ b" I1 Z0 r
#include <winnls.h>
2 t+ w9 i8 U4 u+ k8 y: @
#else
: w6 q! }: d' K7 u6 Y( v
#include <stdio.h>
% h' o2 r% } h; j' J
#include <iconv.h>
% T2 u: p/ |' ^( O( d! V
#endif
% M& Y3 `& y0 m& F8 y
3 e/ S: ~/ w1 `5 ?5 G
#include<string>
" l% I2 _6 i, o5 z7 {0 D) k1 ^
+ Y/ {4 ~5 F j* v
. f5 J: R) Q* t9 B
class UTF8Conv
7 b( C8 R& C" V/ O( i# C/ O
{
+ m( i" o' @# J/ U
public:
7 S/ Y) V' @* A' p" _, e v
static int codepage(const char* code_page);
/ k% K& _. k" B0 J+ D( C3 X1 r
& u1 X3 @! q# F1 @' j
static int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
$ Y: z& ~; }8 y. X
c4 M% e& Y5 U+ j1 h5 H1 Q# t
static int dbcs2wchar(const char* code_page,/*in*/const std::string& in,/*out*/std::wstring& out);
0 f' e5 W4 S, ^* ~
& W0 s9 @( T f1 B N
static int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
E/ L2 L0 O+ l0 N" R/ d
& P6 O8 s2 P0 h9 K4 m: E a8 _
static int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out) ;
" ~3 t6 X( F' q. {$ y
6 R$ X& s3 g0 @& V
static int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
2 i V6 T; \6 Z( v
0 ~4 X- s" [& Z5 L0 D
static int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
' W: R/ H0 c9 a. E5 |+ _
2 G+ z" ] E+ O
static int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
5 k; }# f% C% M" w+ I9 h- k* j$ V) k& `
" K. B" l) }: H5 [ f/ n
static int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
; p3 }' X# ?( h. c6 u4 Q
};
# Z; v8 W; a) ]/ Q
1 ?0 P& P' \- o
$ j2 `$ M( {7 q6 P
$ B9 T2 k: b, k; A' p3 g7 Z
( F x2 m4 D8 `
4 I3 |& \* w' d, M2 j
9 u( d7 r7 k) y
8 L' z" X" u0 \& Y, F
; v- N8 n7 F [, ~
- T9 Z* s* r; q; w% G: f$ S
+ |; s6 w* Z) `
8 o6 I' y+ p8 P
! \8 ~7 C9 F6 _# R+ Q0 w
! ]0 Z" j3 D( ]
# F! w6 G! Y) p9 ^
3 P) y y& ~: N, o) V- c& g
% s# f/ [) @3 n+ w% O: k& U' ^
* T g% d2 b4 N! M* I) j: N
9 P6 X A4 n5 G/ n9 Y4 Y) F* s
1 q& r, m9 u0 X3 Y! J
2 b$ D- U# P Q, z
# d: h, ]4 u- D4 ?# U0 m) k4 v
3 A# T( i4 { t& I/ N
0 Q9 }8 J# `0 V: G
, i2 M1 R% j' e1 |% D* E/ t' z
. E8 O; c! X% g
6 G7 c, M% z8 A' P. v
$ z$ f6 k T7 g0 D; H" s9 k
6 T! T/ R2 f& S% y
: V# O5 n$ E* `& u
#endif
作者:
6875538348
时间:
2009-4-23 21:08
这水快赶上黄河了····· [s:2]
作者:
caesarzx
时间:
2009-4-23 21:11
但这点还不如我打飞机的成果多。
作者:
cherrytea
时间:
2009-4-23 21:29
版主楼主忒不厚道了
' z' T4 y3 l0 y2 }) U
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
作者:
firendless
时间:
2009-4-24 00:33
引用第2楼caesarzx于2009-04-23 21:11发表的 :
$ v+ i; d: F2 h) j
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
) k* P: e$ T a+ t% V1 ?4 J
: f" L# c/ y: i2 Z
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2