找回密码
 注册
X系列官方授权正版
搜索
查看: 4416|回复: 3

[原创] Code... nickname->strid

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis% r- Q5 v# e( Y! P. ]$ y

  2.   a' `1 {: A: c+ p
  3. //
    4 r% t: }. f. K4 Y
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.3 S5 ?4 }6 j5 H+ p/ d  S
  5. // In case this is not legally possible,
    # P5 D1 W, g: `# {% `
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
    ( P8 y) [% Y) I! \4 r
  7. //" X1 {3 D  {9 A. s* C

  8. " E$ Q3 x% u2 B4 p, e0 f5 Q
  9. #include <iostream>/ `& C. F1 A) J: q( u; E5 c0 Q
  10. #include <fstream>& r+ R( x4 C/ y
  11. #include <cctype>2 m2 ]. o6 e1 Q! ~
  12. using namespace std;
    - Y  b/ [; {* Y) ~- a( v

  13. 0 v+ y5 o& F* Y7 n2 S/ {
  14. // MACROS
    7 D$ Z# u7 g( A8 z9 B
  15. #define SYSTEM_BLOCK_STR "[system]"0 L7 i: _  _* S
  16. #define NICKNAME_STR "nickname = "9 J* J+ v, f* r0 S
  17. #define IDS_STR "strid_name = "0 P4 M$ s& T& N5 s( s. D1 N4 _
  18. //$ x; o+ Z6 z0 g+ n) z4 J

  19. # I0 z4 @5 z+ w" G( F
  20. ifstream inf;. b. t: b& I+ d/ o2 H
  21. char *buffer;
    & i0 p: t% i) u0 _3 o) V  H

  22. 2 y/ V, A* f* f! y
  23. int main(int argc, char *argv[])9 p8 y( k: K% g
  24. {. `# G$ u# T; ~' K; B; A
  25.         int i;- F+ @2 d/ l! L! s! o
  26.         ! U8 [( {; P4 ?- V
  27.         if(argc!=2){ ' N9 h+ O9 n" T* O
  28.                 cout << "This program requires one and only one argument.";
    . n* V! b' L, C0 z, s
  29.                 return -1;
    * S& e; B# k$ ?' k
  30.                 }
    2 m7 b3 G* O$ D) j; }: o( n* a
  31.        
    7 J1 c7 U( L9 _$ A- @% M
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);) T" @9 y3 Q9 ]- S8 a: r
  33.         if(!inf) {
    4 L& }5 o  N, x' l9 Y1 O
  34.                 cout << "Error opening file.";
    + O/ b( |2 x& I5 c% r" }: R: f
  35.                 return -1;
    7 ~" e- U5 `+ i* c
  36.                 }0 {" J- q3 C8 z; g
  37.                
    % [, y5 O( j, R4 ~4 l; t
  38.         int streamLength = inf.tellg();
    ' M0 G7 l& h1 S2 |  _
  39.         if(streamLength!=-1) {
    ) Q) d4 c& f9 p8 G" A* \
  40.                 inf.seekg(0, ios::beg);
    $ t7 k, y0 h3 k, j( ]
  41.                
    / B, _; M- E0 p) P! Y5 N
  42.                 buffer = new char [streamLength];
    ! B. n' q3 K. X  {4 n! ^. h" O
  43.                 // Read file;
    1 l; ~; y& p. [6 @- X' |! r3 ]+ X
  44.                 for(i=0;i<streamLength;i++) {2 ~; _" E4 ?. d( G1 @
  45.                         inf.get(buffer[i]);
    $ t% e' t9 t( W) U/ f
  46.                         buffer[i] = tolower(buffer[i]);  M' @; M: J+ a! t$ {2 ]
  47.                         }, S' ~! X2 e% T3 Y
  48.                
      M# m; I& T' m" q5 @5 x; K
  49.                 /* For testing
    $ N& p! Z5 F0 M
  50.                 for(i=0;i<streamLength;i++) {& S( _& h4 f+ [* `7 O1 Q1 f% l
  51.                         cout << buffer[i];
    9 W+ i+ w1 H) C' p
  52.                 }  _! {/ u9 D# L- I" g5 q$ M
  53.                 */
    $ Z) R( J8 J( l$ c, s* d) T+ l2 }8 g
  54.                 }/ P9 M, d; v1 I* Q7 J6 o3 a
  55.         else {
    : l# d/ ^% d$ f6 X
  56.         cout << "Failed to read file." << endl;5 \! q! J' G- l  x
  57.         return -1;
    . E( q" C% Q  |& W; ~0 t
  58.         }0 ]3 b7 s+ U  ~! h/ o
  59.        
    : I( n2 ]# w6 Z9 ]2 _
  60.         string processStr (buffer);
    & _& t4 e$ M/ E" g
  61.         delete [] buffer;
    5 h2 {+ V1 x1 N: g5 i
  62.        
    ( v8 K& E$ H; M9 p. S
  63.         // DUMB DUMB DUMB..../ N2 n6 f0 K' U% Q& b
  64.        
    ! J! ]2 c' A  ?2 E$ }6 K& F) ~: E
  65.         int nextSearchPos = 0;; q; J8 H9 w. K6 |. j9 c  m
  66.         int tmpSearchPos[2] = {0};, v% z& A2 a' n0 T. g
  67.         int entriesCount = 0;4 k& C1 \$ v7 O
  68.        
    * d8 l. X! q' `  m/ f. q
  69.        
    ( ], l1 v% j9 H$ @  L" ~0 w
  70.        
    ( a  r: R& ]" x; c9 g. F' D! F
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {, n# g  L" t2 o0 A. g$ g
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    - T  ^5 Q2 }. @% [, y: i
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    * w) c! i4 T) J3 W" r8 f
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);3 H' d! X" ~" t' E! v
  75.                
    * j% `8 u& Q6 {% |5 K
  76.                 if(tmpSearchPos[0]!=string::npos) {
    * i: v* R+ ^" A# M8 b3 }
  77.                         i=tmpSearchPos[0]+11;4 W' n* `2 {; {3 l/ @2 H- i. a
  78.                         " [- }9 `0 I0 ~9 a' F
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ) E6 H* ^3 ]* Z
  80.                         cout << processStr[i];0 L5 P- T* k9 w2 N# ]: r
  81.                         i++;" W3 C1 \) L( }. ?9 F
  82.                         }
    . C4 q& K6 D. F; u7 ?
  83.                        
    ( b, d7 {# R" W- d. j% F9 n( d
  84.                         cout << endl;
      h: o* y2 i; G: V
  85.                        
    2 u* F% A( n( R- @
  86.                 }
    ; Y! W0 o9 T- F3 j: s' v( C
  87.                
      i0 G4 d$ Q  r: X8 E# T9 E" n
  88.                 if(tmpSearchPos[1]!=string::npos) {/ V( w7 d) K8 g0 q, h
  89.                         i=tmpSearchPos[1]+13;
    2 P2 d" N. l# q6 Z
  90.                        
    , |: P  j' {- d+ ]
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ; d6 O5 s1 g2 Q7 X! _/ f
  92.                         cout << processStr[i];$ T2 r" `  F1 Y* p' R# u' w
  93.                         i++;9 l: D( J% a! {) U3 N
  94.                         }
    7 e/ S0 D$ Q3 k& U& ~" z$ x
  95.                         , J; S- }; e  \
  96.                         cout << endl;
    * p5 a* e3 G* S3 N
  97.                         4 Y* ?, \1 k% g5 v, }9 I, q
  98.                 }
    . y4 v; ~! l1 u7 D% [
  99.                 + ~- f( `( Z% x$ {' E1 K. T' E3 T
  100.                 entriesCount++;! c! k2 K0 w  Z$ N3 o) T0 {2 C
  101.         }# p8 j& X5 I- U. [
  102.        
    ' Z% {; y9 h* E& R. L
  103.         cout<<entriesCount;
    4 k* }0 q. i) O0 W  }" r) C
  104.         return 0;
    % N" g# {- n' T! _( f: B1 d+ Q
  105.        
    : ^" T& U4 e; M- F
  106. }
复制代码
Update: 最后一行输出条目数.
+ K* S! o1 \  `' b# X. \7 P( O* M6 z3 Y
[ 本帖最后由 Euyis 于 2008-11-14 22:21 编辑 ]
发表于 2008-11-14 22:04:49 | 显示全部楼层
LOL and WOW, THANKS!!
回复

使用道具 举报

发表于 2009-4-27 21:23:42 | 显示全部楼层
做什么用的啊,看不懂。。。。。楼上高手帮忙讲解一下,谢谢
回复

使用道具 举报

发表于 2009-4-27 21:44:32 | 显示全部楼层
用Nickname来查找DLL里面的Res ID
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站