冒险解谜游戏中文网 ChinaAVG
标题:
[报道]重新报个到,申请个新人成长礼包~
[打印本页]
作者:
firendless
时间:
2009-4-23 19:44
标题:
[报道]重新报个到,申请个新人成长礼包~
[报道]重新报个到,申请个新人成长礼包~
1 D1 f2 w' {- O) @' e
/ y+ ~; T" P1 {; c% y2 e' J, @ R
灌个水吧...
) k1 _7 I! B4 S# F; r+ s
/**
. o6 q- |5 O7 |( v: `2 G( D
*@file
1 a& B$ ?/ A6 _1 M: R( ?
*@author Jimmy
: h" \! ^& {7 N9 d$ A9 Q" T% a
*@date 2007.1.16
) f5 z; }1 x# I
*/
' P+ N4 T+ ^6 Y' d) {
#include "utf8conv.h"
/ H- G$ i" F3 ?" `4 {
* `9 ^+ Y+ z& A+ @ y
6 M, v$ W+ f% ~" }
P2 H. G w; a" e! E
int UTF8Conv::codepage(const char* code_page)
6 Z) u z8 h3 J: I8 X
{
+ m. \$ k0 q5 I
#ifdef WIN32
; }" ~4 S# ^, H+ s: W* L
if(code_page)
& f& F: f5 ]9 _* T- J
{
2 H6 D# A2 U) X3 L
return GetACP();//既竚箇砞
$ g8 ~: W/ d% [" j
}
& r( ]) D# S( X& r
#endif
( l2 f( I/ Q5 k; X* Q! Y' R+ h" f
return 950 ;//taiwan acp
1 j4 s! E( M; [# M' r
}
! o! C$ } w7 c# M5 A0 y) ?& s
: c& @7 O1 \6 h% u: L7 H2 j* H
* [2 H' Y l7 J! E5 w
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
7 b2 g! V( k3 c# N4 f5 L! S
{
) J2 i2 T7 S/ C8 B; _
#ifdef WIN32
2 H" |, _: u" {3 |5 w
return ::MultiByteToWideChar(codepage(code_page),0,in,in_len,out,out_max);
2 }4 l, `+ q t! ^/ @6 f6 e
#else
- B7 W- I& L7 u7 ?$ ^( g( J
size_t result;
6 j/ k" ?$ A# V- H2 y
iconv_t env;
& {/ u9 X. c6 J1 k
env = iconv_open("WCHAR_T",code_page);
; U; ^& v" ]- o2 ~2 W
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
$ Z0 i$ D$ ^4 ~! j3 e5 T( D0 K4 [
iconv_close(env);
' {& D- o, S% c/ y
return (int) result;
- c. a; z6 ~! N$ ~: D
" ]7 X+ c _5 @- k0 l) G/ ~; f
#endif
5 G1 I M* k) n2 j. s
}
( o* D/ W2 w* Q1 H2 o2 X
8 b3 _& O( H( M- @/ T
int UTF8Conv::dbcs2wchar(const char* code_page,/*in*/const std::string& in,/*out*/std::wstring& out)
) A% ~% N+ U# |8 h2 ?
{
U# {+ g3 W; O7 s2 C
int len = in.length() + 1;
; ~% n; f/ P! Z/ W! P( p8 ^9 Z
int result;
7 ~( u, K# T) T9 s6 v
wchar_t* pBuffer = new wchar_t[len];
+ U$ P2 A3 t6 K
memset(pBuffer,0,len*sizeof(wchar_t));
, |$ {9 l! j0 I9 f
result = dbcs2wchar(code_page,in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
- u' _: b# t! b8 A4 E2 k
if(pBuffer >= 0)
$ B W6 N1 x& D O: m
{
8 R+ u1 H6 ^' y! F9 s
out = pBuffer;
8 N# k4 z$ R* _
}
3 H. Q( K( F7 |; F+ X/ O
else
# f7 c1 h) s- e0 F$ }. A
{
% }% X( }9 ?% C0 d
out.clear();
/ X* P. D& x# R4 D. b) N
}
H3 O, v% Z2 O" P- e' C
delete[] pBuffer;
9 e5 d7 q# v( T
return result;
. y8 g% v7 k4 _4 h1 P- ^9 V+ a
}
: s5 [5 x8 V$ l. D( c0 j; `. \
x2 N, B% T$ W3 ?1 {
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
; B$ Z8 h- Z% ?- [; H {
{
4 r. u0 M2 i/ _
#ifdef WIN32
; k" X& M! A0 ]
BOOL use_def_char;
# U" Q) z$ [5 g6 \9 P
use_def_char = FALSE;
" `$ q D# `5 m$ S5 Z
return ::WideCharToMultiByte(codepage(code_page),0,in,in_len/sizeof(wchar_t),out,out_max,"?",&use_def_char);
. ?& b3 @8 ?/ r* f6 D' v1 a
#else
% k* Q( s9 D9 L& L8 J
size_t result;
# h# h' T0 z0 ?
iconv_t env;
4 u' k1 v! |* \4 `6 t8 m1 {6 v
env = iconv_open(code_page,"WCHAR_T");
; Q4 f6 P# H+ c
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
; D+ h+ R+ l# \3 C
iconv_close(env);
) T1 D6 y1 u! c
return (int) result;
6 L, c/ p2 x; ^% m: R
#endif
7 F9 o2 Z& c$ c7 _
}
+ ~7 t+ \4 Q: T0 \# L
3 X9 ?: N, [; h L2 `4 @" o/ V
int UTF8Conv::wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out)
2 r% o, i' v5 L
{
1 W$ j% O/ p3 D
int len = in.length() + 1;
. ]9 [& b4 H3 }) B E# ~- K
int result;
/ B0 Z* q! a8 K+ t( j
char* pBuffer = new char[len*3];
4 j% T+ J0 W! i$ n S4 B
memset(pBuffer,0,len*3);
- ^" I# L* W5 [" k. ^0 Y( Q5 V
result = wchar2dbcs(code_page,in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
# Z- a: W" O- A% B
if(result >= 0)
+ g3 d6 M. f. }; M+ n+ V4 L3 M
{
8 [2 ~7 g4 j1 }6 ~6 F* V
out = pBuffer;
% w+ k! M# K# A' d- h( B9 v
}
" p- ^3 U3 Y6 A" D- b+ W; q1 B: z- g
else
& M/ ^% J5 d/ i/ R7 d
{
8 F4 K1 _% T5 U% Z% z9 o! |
out = "";
6 l1 V, u: ^- o% e
}
& v; k' U9 _1 Y1 E
delete[] pBuffer;
! f/ ?2 q6 |9 Y5 L B* g
return result;
7 O! j, y5 r4 L7 ^) F/ U
}
( A* {+ x# L2 M& ]
$ F5 s( G" E& G' @1 A! I$ i
int UTF8Conv::wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max)
2 t6 G* D0 p0 s9 w6 t
{
5 s/ ~$ `; O) M Y: ~8 [) Z) p
#ifdef WIN32
3 y* x% W" q0 y7 @2 M0 Z! x/ t
0 r$ G" l: i5 C3 k8 L! `
BOOL use_def_char;
/ g7 f7 l) X, l+ j$ R1 T+ A
use_def_char = FALSE;
7 _. Q: f; u7 q& P0 l
return ::WideCharToMultiByte(CP_UTF8,0,in,in_len/sizeof(wchar_t),out,out_max,NULL,NULL);
% j+ w" }2 Y: K* s Y1 U- ]5 U/ U! B
#else
8 ~0 v& |9 }; v
size_t result;
( ]/ M/ c' T& r |7 \5 R4 F
iconv_t env;
/ }9 |- V: C( t* B3 S' t- k1 _
. A9 g. o& J0 t0 b* L- Z' ?
env = iconv_open("UTF8","WCHAR_T");
$ O R. R# `/ u: q2 \2 g/ M
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
2 [' _3 Y0 q2 H( t9 o( T2 G
iconv_close(env);
4 v6 W2 |% Z( ~. d
return (int) result;
A- u9 q! Y1 g" C
#endif
, q; l5 m( n7 u5 r' b
}
+ e5 k) Y: t: T+ x8 V! T$ J# P) }
& x4 K6 {2 ^) {7 I( X: W
int UTF8Conv::wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out)
- U& M8 m e' y% k
{
, N% }8 a9 L; b( ?' T5 o
int len = in.length() + 1;
/ f. b) S- {6 m8 j$ a3 Y* C, [
int result;
3 O4 S$ V+ D( l) M
char* pBuffer = new char[len*3];
. n2 ~* n% [" ~) y S$ Z
memset(pBuffer,0,len*3);
! C8 U" K) n; G- w" C: c8 y
result = wchar2utf8(in.c_str(),in.length() * sizeof(wchar_t),pBuffer,len*3);
* f `( v$ l% ~9 z
if(result >= 0)
" F- C( u9 _1 s% |
{
) |6 e0 e3 c4 T" t) x9 T! @
out = pBuffer;
2 l T# G: Z' Y( u# K( J' o
}
+ m- a2 u, t) a& r9 Q
else
: U! q- p8 ^$ h9 g+ @8 J! r
{
. u' j: z' r2 \: j/ r
out = "";
5 a& I3 V7 c' Q
}
' n" N4 B, k, {% O4 a- {# Z
delete[] pBuffer;
P5 i, U+ Z+ P3 V& q5 {. K9 v+ W
return result;
& O6 b8 s' `3 m0 U/ k
}
/ ^2 K) z7 A9 i2 b- b, l
1 t4 h/ X h: ]- U' \9 I! l. Q
int UTF8Conv::utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max)
# }5 I4 P# d. M7 h2 B9 u1 K# V
{
: `0 \4 ]( r' E2 l
#ifdef WIN32
$ m8 i; U+ m6 ~% E
return ::MultiByteToWideChar(CP_UTF8,0,in,in_len,out,out_max);
& a+ P4 h' D3 B/ T- x- i' a
#else
v2 m; _* K3 X/ j- C0 g
size_t result;
' Z: S* i7 `6 I! ]5 Z7 i4 s& J4 _0 g
iconv_t env;
* ~+ Z' \9 s/ l( q* L7 F* q
env = iconv_open("WCHAR_T","UTF8");
6 Q- _% W( e" K" z& `. L
result = iconv(env,(char**)&in,(size_t*)&in_len,(char**)&out,(size_t*)&out_max);
( {/ @( e, l- `8 P2 \
iconv_close(env);
" r$ b; [+ R- @/ h; Y
return (int) result;
. ^; |! l8 Q7 S
#endif
9 I4 m1 P. |% x& s
}
, z$ t; ~" ~0 `/ C6 _6 \8 v
! b; L& B) H! W% a
int UTF8Conv::utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out)
2 A2 {( y; V3 _7 A
{
+ N' ^. Z6 J' {
int len = in.length() + 1;
' Q" `# R% k6 @2 H$ k
int result;
% Z3 L4 B* G I: g8 w; ^4 H
//wstring temp;
! q9 l/ i+ s: [6 v; M5 M, ^7 T
wchar_t* pBuffer = new wchar_t[len];
x: z) E( W" M- A
memset(pBuffer,0,len*sizeof(wchar_t));
c) h" g: F S
result = utf82wchar(in.c_str(),in.length(),pBuffer,len*sizeof(wchar_t));
3 Y+ C- j( ^, D; c' q: ^
//printf("utf82wchar result is %d,errno is %s\n",result,strerror(errno));
' R" p$ t( {" t6 R4 I* i- @
if(result >= 0)
# N) }) X4 K( s) J! X' e
{
; E0 V" B9 z* ^! i) w5 L, N$ r
out = pBuffer;
! s. y/ S; {# g( b3 I
}
8 V9 T2 D4 X- M
else
$ |' q$ ?; m. ^# d
{
+ a o: @* w! B7 ~
out.clear();
4 @9 U' u" \# b) g
}
6 ?* E8 j6 e7 H( c
delete[] pBuffer;
# C$ K$ G& O4 c
return result;
; \) p* E' ~# @3 ~* i& j6 ~( W
}
. E) p9 @1 g. a: S) N; ^" ^/ e
. }2 J& T9 Z) l9 L+ s g
/**
/ K7 m$ a7 q+ |" b" P
*@file
@' p8 D# y) E0 b+ N
*@author Jimmy
/ X7 G2 A) ~' u2 k
*@date 2007.1.16
: Z: P$ O9 n& N+ [# I8 M
*/
( g' K$ I9 Y; k, S: P
#ifndef _UTF8CONV_H_
0 P9 v# j! E7 H: }6 F+ U! F
#define _UTF8CONV_H_
% J6 [: @7 U; u; I9 g: E
6 ~ R% Z) l$ z4 Q* t0 N) S
+ B1 S; v: b- B7 \. Z. j& c5 B
#ifdef WIN32
# c) i: j( |# L! W
#include <windows.h>
4 y' Y( p# U: W2 G& F& i
#include <winnls.h>
( Q! j" K: f9 o) l
#else
( B b) T( _9 o" v
#include <stdio.h>
' Q0 x; X+ }$ |- I& X
#include <iconv.h>
' ?& F. H: ?: m
#endif
' _# r+ g7 b, M6 Y
- E' W# H+ N8 G; Q5 j" Y7 @5 S
#include<string>
4 z. A! c0 ~7 n1 E6 Z2 a, j
* _& U' t8 S% j* F
' ^( F! \5 [7 D+ A
class UTF8Conv
- C" V2 U) y9 }" i) i
{
, [; }/ l, e' v
public:
5 L, i! C+ K; h! L
static int codepage(const char* code_page);
}1 X4 n( N y& I) c
5 E. a+ n" j# y* |
static int dbcs2wchar(const char* code_page,/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max) ;
7 ` q& R4 ] o6 E" B
+ F! |0 B& y% P
static int dbcs2wchar(const char* code_page,/*in*/const std::string& in,/*out*/std::wstring& out);
Z% ]/ ^2 s- R5 y0 Z# W7 D
% A1 `, \ J* C% L8 r0 w$ n* d8 Y
static int wchar2dbcs(const char* code_page,/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max) ;
. f- r: N8 n6 I
: x" t2 e) n6 L( k" I
static int wchar2dbcs(const char* code_page,/*in*/const std::wstring& in,/*out*/std::string& out) ;
1 p5 G7 Y |5 L6 w7 }- F' r
) @+ T& d; @# Q h2 N) g
static int wchar2utf8(/*in*/const wchar_t* in,int in_len,/*out*/char* out,int out_max);
! G( X- t3 v) E- W
M0 D5 m- C+ P* L; z' @
static int wchar2utf8(/*in*/const std::wstring& in,/*out*/std::string& out);
8 }' r M. } ]( I
; b0 I" `( V, K" k/ P; h
static int utf82wchar(/*in*/const char* in,int in_len,/*out*/wchar_t* out,int out_max);
$ v% U3 W( e% j5 u0 |" y* M3 z" c' x5 w
: ^3 U6 a* ~3 h: z$ \$ \
static int utf82wchar(/*in*/const std::string& in,/*out*/std::wstring& out);
! N3 L* K5 ^. @2 D. L$ r& @
};
# @6 A: Q- v$ z0 s3 K. m3 l) F
9 U2 ~0 K4 C/ E& B; ?
' b9 O+ Y/ W, N9 S/ [8 q- z k
3 m" t P7 F% [+ o
+ I1 E2 ~/ V5 l+ v$ F! g* `
4 _7 F, \8 Q0 @! x5 [
0 W3 |' E( U! G: C: B, d4 _
0 I- N4 |+ D" w8 t1 Z! v
+ q* j. A+ X6 O! C0 I+ g1 t
0 H9 F& G; |8 c1 w( S8 T
1 P! i9 |* B4 e: c1 W! t) p# j
y3 b' V/ k# t: t; V
: v2 ~7 x& t9 L) [
; o% d% ^; H) h. R5 T$ A! T
1 M* X5 X. x X3 H& \- _4 T
- k- P& W2 e \+ U2 _
$ V' c/ x9 ^4 |# Y
- c; J8 m! U+ F- q! C* k9 Y, S
9 p! u3 X9 X. q+ e5 u- C
* }$ N5 q& D }* N* r
- O' f; D+ |# K5 p
& e; c. P5 ]3 y& @1 ~) a- p! ^
; @: z+ k3 d* k9 U
6 p4 m5 n2 [1 j/ {! D u
' F# ]/ ]2 }' a4 n
2 q' t$ z9 T. m9 n1 Q" S! M
3 n, y7 ]9 |1 R. p% v0 t
, g" H/ T6 r" W- t4 c! C/ j9 J
+ T9 Z$ f: U; F* u2 _9 M
1 ^9 X& E4 V. U' a
#endif
作者:
6875538348
时间:
2009-4-23 21:08
这水快赶上黄河了····· [s:2]
作者:
caesarzx
时间:
2009-4-23 21:11
但这点还不如我打飞机的成果多。
作者:
cherrytea
时间:
2009-4-23 21:29
版主楼主忒不厚道了
: j1 J. F3 H) h! ?1 Q8 B2 o& x
这样的话我要申请平民新人年度成长超级大礼包 [s:2]
作者:
firendless
时间:
2009-4-24 00:33
引用第2楼caesarzx于2009-04-23 21:11发表的 :
6 ~& E; l! A. s2 C6 @
但这点还不如我打飞机的成果多。
莫非CZX造就了一个民族?呵呵呵~~
+ C! }5 \ Y( w; ]% \1 n
/ r; s8 N1 p2 P
and 楼上的童鞋,你要领奖,俺一定帮你加,嘿嘿~~
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2