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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis
    : a- E& I1 p8 ?- g9 D

  2. , f: @5 ^/ \3 k* E! o' b2 y' k/ {
  3. //. f6 s6 T2 E1 s4 f; R
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.9 M9 \+ q1 ]; E  {' u; f3 g. u
  5. // In case this is not legally possible,
    + F3 Z4 R6 [1 U6 ]+ e% S. [
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.: d4 g& G* X1 V
  7. //
    ! q/ o- B9 i8 o; \' Z
  8. ! y/ c  |! v. w
  9. #include <iostream>( K* B7 N' B) x. R
  10. #include <fstream>
    ! q  q2 B  H) x+ V& W
  11. #include <cctype>  O' M( n  J0 y6 V2 o  o7 }
  12. using namespace std;
    $ n2 p4 j( D# c( p9 D: N+ s& x

  13. ! r. ]6 n  w8 z0 z3 D
  14. // MACROS
    + D/ t2 t; q; _# S, X
  15. #define SYSTEM_BLOCK_STR "[system]"
    - V" d1 z+ ^+ B5 {9 e4 f% w
  16. #define NICKNAME_STR "nickname = "4 u" H, s) @5 F/ h
  17. #define IDS_STR "strid_name = "
    " j2 E0 z, }1 d
  18. //
    3 I( a. J  ~' n5 ?  d

  19. ) S, f! p% |& A/ A
  20. ifstream inf;
    9 E4 E5 x% W( S( D2 ~7 {
  21. char *buffer;
    ! W* R) |& {8 K; k
  22. ) b4 C) f1 Q0 Y* s, q
  23. int main(int argc, char *argv[])6 R5 J: q$ g  V; i' i
  24. {0 O' f4 \7 U+ @0 {+ G% E0 X
  25.         int i;& B/ t7 q  f& C2 ]
  26.         / k1 K, {; @: c$ n& r6 a& b
  27.         if(argc!=2){
      F+ Q( Y! w0 C" R* X  K
  28.                 cout << "This program requires one and only one argument.";. V% ?6 P2 J  p& u% P! g
  29.                 return -1;
    ; W9 }9 F& `6 w% B8 a4 n
  30.                 }+ W- `& `, m- C$ b0 `* k  w
  31.         6 r; z3 D' Z* b& s- ]  T
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);
      X3 L8 F/ F  S$ W' ^# e5 d! a% [4 o
  33.         if(!inf) {
    ' h& l5 v1 N3 k- _" O0 o" q0 H2 Q
  34.                 cout << "Error opening file.";
    4 o0 P) |- o# N) z& y0 B0 z  l7 V
  35.                 return -1;: ^2 l1 `/ c2 u: h; o! O
  36.                 }
    / Q3 X& a9 d( @7 {
  37.                 2 Y; }2 T5 h: C
  38.         int streamLength = inf.tellg();
    + _1 z/ C# J, X# [, T& e  e
  39.         if(streamLength!=-1) {
    7 m' t( t2 B3 W5 M+ q! C& ~0 Y
  40.                 inf.seekg(0, ios::beg);, T' t2 |5 s& P6 ]. T! K/ F
  41.                
    ! U. n0 C8 j1 k0 C5 @/ u
  42.                 buffer = new char [streamLength];
    % \* Z- O1 Z7 Y; @
  43.                 // Read file;
    4 f' v$ g8 ^6 W' [2 q
  44.                 for(i=0;i<streamLength;i++) {
    3 C( Y; }( q+ E: Q6 U% L
  45.                         inf.get(buffer[i]);/ t4 x1 C5 [0 ]' D/ G
  46.                         buffer[i] = tolower(buffer[i]);! J  C. `0 j. }7 C/ F
  47.                         }
    ! x4 J- y: j  m5 ]6 v
  48.                 ' h+ o! }* ^2 @! _% g1 U3 A
  49.                 /* For testing( n- L! P$ \$ W& r8 x! m+ F0 o
  50.                 for(i=0;i<streamLength;i++) {
    ; H; C* S, y9 E, d/ q8 w
  51.                         cout << buffer[i];
    2 V' S- v+ W& Z! t: h4 v9 o
  52.                 }5 F$ V& W7 a' y5 N; H
  53.                 */
    ' N& q6 D: H2 {
  54.                 }
    : p" K; j* H0 w+ g6 a- L
  55.         else {  w6 w0 X5 ^' L
  56.         cout << "Failed to read file." << endl;
    / O( v; G7 ^) A% U9 ?. D2 c; G
  57.         return -1;) t3 R& m' E, Z% ]% ]
  58.         }, v1 z* y7 r& v) F2 \
  59.        
    4 N) b$ M: [1 l4 l4 S& }
  60.         string processStr (buffer);
    ' C5 r4 A: w$ o& c. j* i8 ~- U
  61.         delete [] buffer;
    % g( m* L( m- }: w; m  E: Y
  62.         : O$ b- [$ a6 O
  63.         // DUMB DUMB DUMB....
    ! B5 Z2 g0 ]! m5 X, a+ X. X3 q
  64.         / S' B/ ?3 M9 ^; t1 ]
  65.         int nextSearchPos = 0;4 i! x; [/ a0 }4 o
  66.         int tmpSearchPos[2] = {0};; D8 g. {8 }9 |; S3 Y# r
  67.         int entriesCount = 0;, e4 `; J& j2 N, n0 K; G$ F
  68.        
    0 C& O7 T; V% u' W  V7 s
  69.        
    + {0 @% ?5 t, z6 J* _; t
  70.        
    ; N  }/ B' I! d
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {
    5 m* T+ W- e6 A+ E% l6 C  A
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;. A: O3 U- B! R6 N% t6 y
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);8 R3 H# {2 \# p4 u! Z$ e4 h1 `
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);# p, K' K$ l; p% c4 j; r
  75.                 : H0 W$ m" K" f
  76.                 if(tmpSearchPos[0]!=string::npos) {
      Y. P! ]  q* M8 ?1 u, c
  77.                         i=tmpSearchPos[0]+11;8 p% _8 c* W7 b/ r( h2 B" p2 m1 q# s
  78.                         7 n) C* d" s, q: _% ?
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    # ]/ N4 P: l6 v" |: M& x
  80.                         cout << processStr[i];+ @' x4 m; @8 C5 j
  81.                         i++;
    0 j( m- y, s7 [' O* X  t
  82.                         }( d6 r) b3 k# }+ m; ^
  83.                         . j2 I0 X  v( |$ m2 T
  84.                         cout << endl;
    5 Z$ @1 P2 P2 H* Q$ T
  85.                        
    $ A  ]) b  w2 f6 R- T+ `
  86.                 }  s2 P% L8 |( n/ M8 H
  87.                
    ' ]3 {# S" T* ?
  88.                 if(tmpSearchPos[1]!=string::npos) {6 j* Z+ B& S  w
  89.                         i=tmpSearchPos[1]+13;
    : q' }' `% j$ L: a
  90.                         1 H: D. r+ A7 ~5 k% k5 @
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    2 H. ^2 t6 T7 ]& N8 v
  92.                         cout << processStr[i];1 F# ?) }! R; W4 q, o$ f4 f
  93.                         i++;
    + q: o: M- D. K, e0 W. ~" O
  94.                         }
      b/ e9 [0 L9 I" N4 U
  95.                         5 c1 F- v7 w: P' ^
  96.                         cout << endl;
    1 a" G1 [: k& u! {2 N* ?" L& A
  97.                        
    # r% ~/ c9 D2 V
  98.                 }
    ( h3 B+ [4 F# T7 q, _1 J5 t9 x
  99.                
    # ~2 f2 p( Y- p: `% Q: Z% e% L
  100.                 entriesCount++;. x: o, T' v. n) r
  101.         }
    3 K9 u, n# P! w" q2 Z" J
  102.        
      c( a$ l& M8 n$ t
  103.         cout<<entriesCount;" q- w* i. j0 n* D2 Q2 S
  104.         return 0;
    9 o" V, [9 S# q  n4 y6 F
  105.        
    3 q2 O/ K9 U1 n0 B( g
  106. }
复制代码
Update: 最后一行输出条目数.- S+ o6 w, P/ z8 D: D/ v1 E
  J, _8 Z9 Y2 n! c- v
[ 本帖最后由 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 太空游戏站