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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis
    6 C% F3 i" A3 I. U
  2. ' q! G" o2 N2 a) J
  3. //+ E# S# k5 ~: a1 e( ?- p7 c) h) G
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
    $ v8 T# K' `- |" r3 b% E
  5. // In case this is not legally possible,; g! V/ d" X' K7 k
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.0 t3 q# l5 X$ r5 O/ q
  7. //2 S" t  g+ G' t: ]* o( u

  8.   r! a0 F2 V2 ^1 C* d6 ~1 T
  9. #include <iostream>7 F: Z+ \1 V9 j
  10. #include <fstream>2 k- }* ?8 ]# {2 O
  11. #include <cctype>
    0 e7 `* ^( C. d( o7 B1 M. o
  12. using namespace std;& u( L8 m/ \- O2 n4 a4 N& r% j  ^
  13. 0 L- F% i) F0 C0 q2 n$ _4 {* ~& W
  14. // MACROS
    ( _! \& x1 x7 L4 ^( n# H
  15. #define SYSTEM_BLOCK_STR "[system]"
    + E0 R+ a& b7 c/ }" T( ]
  16. #define NICKNAME_STR "nickname = "" G9 ]6 C) w8 `
  17. #define IDS_STR "strid_name = "
    * {! R! l; X* C
  18. //
    : R1 X/ k1 }" I: w& g

  19. 8 ?% e' O! P, [8 x1 _- a& P% P
  20. ifstream inf;
    , F8 X7 z4 v8 r/ u2 l& k1 o
  21. char *buffer;
    7 J# E( |# }! @. N$ m2 ?

  22. ( s) C+ g; {4 |; P3 I- ~
  23. int main(int argc, char *argv[])9 l' X# M, u- K" c9 _# W0 ~
  24. {  m! U% w7 s9 ?. y6 J
  25.         int i;5 d$ |7 y4 w- d$ U
  26.        
    ; C  T3 y: E/ e) B3 F3 [6 `9 X* F
  27.         if(argc!=2){
    " T' D; e' i8 I2 @8 f- e. R. W* }
  28.                 cout << "This program requires one and only one argument.";
    1 o% P8 y# U& q- E
  29.                 return -1;1 v% T. }" X1 }# S5 `
  30.                 }
    % ?; P) R3 r& L) H5 p' @
  31.         ) ]7 W. @, P* a7 g0 p. X
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);: a9 J4 F( p7 z
  33.         if(!inf) {' u* h; r8 v# T. m
  34.                 cout << "Error opening file.";
    9 e9 [0 N) s, y% z- w
  35.                 return -1;3 F( q: |/ d- P5 v! I
  36.                 }
    3 _- Q5 P6 |2 f% w8 k/ z; x. Y
  37.                 % m' q. o. C4 ~  C! f$ v' q2 H
  38.         int streamLength = inf.tellg();
    . W9 A. [8 E) e- H* ^) P
  39.         if(streamLength!=-1) {
    ) |0 N' {' g. |, Q5 j  L  }% A
  40.                 inf.seekg(0, ios::beg);
    0 A# u9 B/ d6 d) z; Z
  41.                 1 x) ^5 \# l1 M, @5 X3 N
  42.                 buffer = new char [streamLength];
    - ~' r  \7 Y6 L) v8 v! |% H# s$ {  ~( e
  43.                 // Read file;' \9 {) k; [  s. I' e) C
  44.                 for(i=0;i<streamLength;i++) {
    6 |6 K' U) z/ ~: E
  45.                         inf.get(buffer[i]);6 v& C8 S- z& H) Y
  46.                         buffer[i] = tolower(buffer[i]);
    8 g9 ]) l  Q# i# _; d1 \$ D, V- c
  47.                         }- y5 S7 ]  Q- p  d4 a
  48.                 ; _, u; K  H$ u3 f* T( o
  49.                 /* For testing9 O8 G# K3 \. |- b  A8 I
  50.                 for(i=0;i<streamLength;i++) {2 W0 G. \+ ~( _0 R, {
  51.                         cout << buffer[i];
    3 F; f+ S& m; ]5 s4 _7 Y* u
  52.                 }
    * F1 l7 c; W& M" L( f! X
  53.                 */
    : x2 ^. I' s$ J7 f
  54.                 }# Z2 E3 c6 j5 u
  55.         else {2 X) B; K5 t8 _" x6 w$ _' d
  56.         cout << "Failed to read file." << endl;! \4 N. r  X+ |  P, c9 ~& u1 q2 Q" i
  57.         return -1;* E. z7 ?' V+ x. J
  58.         }; }2 G3 C* ?& N  X5 b0 \0 d) E7 F
  59.        
    7 {; F) [* @: t: z$ ]7 r% C
  60.         string processStr (buffer);5 s! x$ W: _' k1 j. E
  61.         delete [] buffer;
    , l8 o0 `) x9 M" [
  62.         " C3 J. |1 |1 M
  63.         // DUMB DUMB DUMB....0 N4 x& H/ l5 }" N* @& N) s! ^
  64.        
    / {' r. S0 Q0 D
  65.         int nextSearchPos = 0;! o- |; X9 f' o/ P- o" t& N- X. |# W
  66.         int tmpSearchPos[2] = {0};
    4 S7 ]1 a" K* e/ y- s
  67.         int entriesCount = 0;- F" @  N  Y5 Z: i0 H) r& {" C6 C0 n
  68.        
    2 ~3 `1 _# k' H7 }
  69.        
    ! i  n1 ~- q  v: @- h$ k
  70.         $ E! u: s7 e! T1 S& @1 L# J
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {
    5 Z/ B% X6 U6 Z. S) g
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    * X+ D. q' H/ P, }2 }8 [
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);! h0 v! Z4 z8 J3 s
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);* M0 ?1 \8 A# V% P' n
  75.                
    & V; r$ @9 ^' Q2 O+ R' O: n
  76.                 if(tmpSearchPos[0]!=string::npos) {
    & }( N" R7 h* \- X0 j* v1 f
  77.                         i=tmpSearchPos[0]+11;, J& B( J! K7 x6 Y% h
  78.                        
    ' u6 o: N5 u& ?
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {$ |# K9 z1 C6 Y0 x1 l- X  r% g, Y% D
  80.                         cout << processStr[i];0 n& c: Z; I  d2 |( m' T" T/ {
  81.                         i++;* V1 E. v* f1 b
  82.                         }
    ; w2 C" F+ L! _5 G# p$ l6 n# ?
  83.                         ' `# N! ]6 V* ]7 p
  84.                         cout << endl;$ `# J& A! }  p* R6 e
  85.                         2 U- y+ w* i" O6 r. D. |
  86.                 }) _/ t/ A- [; n; @9 m9 a0 A
  87.                
    ! k2 B; n  F! L
  88.                 if(tmpSearchPos[1]!=string::npos) {0 h% j$ g: _2 l9 `9 ~- D' X
  89.                         i=tmpSearchPos[1]+13;4 ?0 y+ \6 n  E3 j7 R- m; A0 V
  90.                         / B& L' ^7 {  M6 t; x! O
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ( A4 H( `" J+ f, H& {
  92.                         cout << processStr[i];
    . P: o, q. |7 r! q7 \! S
  93.                         i++;; H  ?$ g0 S( f2 t* H# ]6 Y
  94.                         }: |" @3 Q8 s' w- r
  95.                         9 D# r: H. _/ I$ ?9 n" B
  96.                         cout << endl;
    % H* B% V# C. \( O4 o9 C5 t
  97.                         9 l* q# p( I, @& [( m
  98.                 }
    ) D5 {- K: O4 V
  99.                 : S8 Q0 N' p9 g  f
  100.                 entriesCount++;
    % f) u6 B6 x  Z1 r& E
  101.         }
    - m% F# f' \9 G8 |# ]+ _( i. x
  102.         6 b% n; {; z/ G, S) r5 K
  103.         cout<<entriesCount;1 h! ?1 L1 H! j
  104.         return 0;: R) }9 e: j9 _' y
  105.         ( s- |' n6 g) R0 \( e% w- }0 j
  106. }
复制代码
Update: 最后一行输出条目数., U1 I* Q, e9 [; g" m4 h. Q

' |2 d! m/ B3 v0 ~" u9 ~[ 本帖最后由 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 太空游戏站