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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis
    ' `+ F9 j- r$ B3 Y
  2. 6 w  z; I7 W* k
  3. //
      o$ n6 V3 C1 E
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.! X* Y$ L' q$ b3 p
  5. // In case this is not legally possible,
    , h5 k  o3 V' ~' c: }+ ]( Y8 U
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.$ b2 _; |0 S0 B; v
  7. //
    5 ~6 ^$ v: G9 f" o  D/ X
  8. 8 y9 }# ]6 T1 R: G1 O
  9. #include <iostream>* |1 k/ Z/ K- [' c9 J" J
  10. #include <fstream>
    : ]6 G: @8 O; ~1 @' \; K3 J  Z
  11. #include <cctype>
    ; [) D" C5 B4 e! J' R3 v
  12. using namespace std;
    + `  _$ y! O5 I0 o" g4 B
  13. ! d0 r4 h( l& Y7 ~
  14. // MACROS
    ! {& }# m5 Y( N
  15. #define SYSTEM_BLOCK_STR "[system]"
    0 N0 F" j/ ~, X9 p
  16. #define NICKNAME_STR "nickname = "; i6 S8 n- S# N- ]
  17. #define IDS_STR "strid_name = "' v( X( t" P. I; y; r% \; v
  18. //
    0 z! o) Q1 v3 j5 b- ~3 M8 J

  19.   H% E. }. w  P* E- T! Z
  20. ifstream inf;9 Z0 R, o* s3 P
  21. char *buffer;
      X. ]; S" }6 L5 i! t+ n
  22. , o7 f) G5 z0 u5 N; u
  23. int main(int argc, char *argv[])
    * }& e% J" \$ ^4 `& m
  24. {
    $ c2 T, F3 F3 E( o3 h
  25.         int i;" |  E- n. N# W) {; u% c/ d
  26.        
    ) H; Q/ q6 n2 A% m* j$ p- V. B
  27.         if(argc!=2){
    0 X0 D/ d! c. I  n3 z
  28.                 cout << "This program requires one and only one argument.";
    - c: N: |: C- {4 L
  29.                 return -1;
    * ~& ~# ?3 R  a- P
  30.                 }
    # w9 @  D: ]7 w; w7 k' m
  31.         + I: m6 Z2 E, O* e, e, _& l
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);" }! n7 u, G5 C4 B% C: q
  33.         if(!inf) {
    1 m( [, y6 Q8 v  v
  34.                 cout << "Error opening file.";
    2 t' b: N9 l1 Z/ c: ]1 _8 P
  35.                 return -1;
    % W* C) f5 h" y: W
  36.                 }( E4 ~1 g& r! t: n
  37.                 1 w: Q& F) u. z. ~1 u" l
  38.         int streamLength = inf.tellg();  H4 D) V% T4 g# R( w. m: `1 D
  39.         if(streamLength!=-1) {3 m7 L. a& `# r1 G% s) k9 t$ W! |
  40.                 inf.seekg(0, ios::beg);
    3 f  F# I, m+ o( Z) s, s: _
  41.                 3 ^* `" y2 A2 m
  42.                 buffer = new char [streamLength];! O( N& N/ [  N5 }+ G9 [0 u
  43.                 // Read file;
    7 Q+ ]; e# u( M0 g
  44.                 for(i=0;i<streamLength;i++) {6 C" w9 I5 |5 `8 X- }$ D
  45.                         inf.get(buffer[i]);* M; J% n4 E5 `3 Y4 K
  46.                         buffer[i] = tolower(buffer[i]);
    7 t( h" m% Z! z9 L7 }/ z1 p6 _0 g
  47.                         }1 P& `3 {; u" w* v7 V
  48.                 : ^; H- @$ G% E1 x
  49.                 /* For testing! G: {, r& A# p- T6 _
  50.                 for(i=0;i<streamLength;i++) {$ \5 \' n# z# c3 L* ]
  51.                         cout << buffer[i];( B) i. T# g" G9 u  v
  52.                 }
    1 ^2 v  X. J" \, `2 _7 L5 z* v
  53.                 */' R' B% @8 t! j0 v
  54.                 }) ]' {' a6 y, P. ^( r' f
  55.         else {7 P- I3 R  U: X2 y
  56.         cout << "Failed to read file." << endl;
    ' }# o' |7 F6 q5 b/ H
  57.         return -1;6 N4 L/ i7 x+ p) j' }
  58.         }
    ! R$ a* P  x) I/ v
  59.        
    / k6 U. Q3 [+ e
  60.         string processStr (buffer);, J% c7 @% [' l% Y! v7 V
  61.         delete [] buffer;$ e, J, f- x' K/ ^" n3 o  k. q% @
  62.         # }' b: c( D5 v4 Z/ p
  63.         // DUMB DUMB DUMB....
    , V! ~1 N+ M$ ~
  64.         & U) i7 X: d9 G  A
  65.         int nextSearchPos = 0;
    $ s1 r" A; H% e4 b( [8 {& M
  66.         int tmpSearchPos[2] = {0};
    5 A, R7 g: j- J6 n1 R
  67.         int entriesCount = 0;
    - d' b1 W2 K, S9 R! }  e1 C1 H
  68.         . F. j( H4 s  O
  69.         ! o5 M& r$ n& T
  70.        
    8 u0 m" L' O# G3 S
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {9 u5 @4 L5 o% Y# B
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    : i7 d$ X6 W, r5 M$ {0 ~7 n- P
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    2 E- I5 ?" G2 T/ c, M
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);
    + `) ^- W; p- b+ x
  75.                 ( h1 a8 `( \$ h5 j% z5 b
  76.                 if(tmpSearchPos[0]!=string::npos) {
    8 E0 i; R2 \. q' t" ^
  77.                         i=tmpSearchPos[0]+11;5 \( i  [& \3 U) K! M, W' ~5 ], M
  78.                        
    * Z- }+ g/ }# N" S
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {$ f' ?: M( t; F! l6 k
  80.                         cout << processStr[i];
    ( x" W2 i% L3 T5 [0 ^: a* i$ P3 x0 q
  81.                         i++;
    . J* q$ n: G4 D* G
  82.                         }
    - V' ]6 a0 u' Y
  83.                         0 a5 B. y2 @9 O- d4 o$ S0 F8 Z3 O4 p/ C
  84.                         cout << endl;% U. ~1 [: g$ H! u; z
  85.                         2 r/ X4 ]! B' E: r$ b
  86.                 }# @8 k4 Q5 A: E% A
  87.                 8 r3 Q/ S4 l4 ]- ]. d" k
  88.                 if(tmpSearchPos[1]!=string::npos) {
    ; b" q1 {, \5 Y% ~) R# G
  89.                         i=tmpSearchPos[1]+13;3 }7 h8 t: K( ^8 L
  90.                         ( C  p  n# Y( u0 _7 U( a
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {9 U8 W5 @1 b/ ?) A3 J8 m- {8 J
  92.                         cout << processStr[i];
    " Q; _" U/ \# }9 M) Y
  93.                         i++;
    9 {+ f4 b' N/ u# l4 V
  94.                         }1 [5 W6 ^4 m7 c1 j2 `
  95.                        
    ) |! @; ?  _* Z% D0 {5 n
  96.                         cout << endl;( b# [3 d" H& U7 W
  97.                        
    ! E% V7 Y& _/ B7 c
  98.                 }: H& H+ d% o, s! R5 V; l
  99.                
    & n. n  P8 p4 x. O% c
  100.                 entriesCount++;
    4 @9 ~& i' r. S. g
  101.         }( h4 y8 k6 ~. h1 a
  102.         9 t& s, j4 \. f+ x+ w
  103.         cout<<entriesCount;
    , e+ h* N3 R6 Z  r& w* j+ D9 D
  104.         return 0;
    5 K2 a8 ]' n$ a/ y3 @8 O6 A# U
  105.         5 Q. y7 _! _) p
  106. }
复制代码
Update: 最后一行输出条目数.: ^% E- B, m% e5 @7 i- L# i9 R& @3 Y0 g

- X! y5 {. ^5 b) ]( L[ 本帖最后由 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 太空游戏站