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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis; Z* _5 e" x# x6 g* C; @" J) d
  2. ! h- I' H$ ^8 d
  3. //
    / Y; u. |& ]0 I9 Z, ~' J5 S) @, u
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
    8 a6 f' m1 `8 d
  5. // In case this is not legally possible,& y4 P$ @# K+ c5 _1 G6 B
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
    # r( S2 I3 L3 S
  7. //
    1 }+ u7 X7 ]2 D

  8. . U9 B: y' K: g) u3 [
  9. #include <iostream>
    " N; ?# [1 s  e! B3 |
  10. #include <fstream>0 u7 z6 `$ R; v0 I- C/ f0 Y
  11. #include <cctype>0 j7 O& J; K5 N# }9 h+ W/ }
  12. using namespace std;
    ) R8 q+ e9 p0 j- l
  13. . [1 n' `& ^* b4 W$ L9 l3 [
  14. // MACROS  X1 z- x: q2 F: A( v% \" A
  15. #define SYSTEM_BLOCK_STR "[system]"
    # r/ Z' C/ f' x9 R5 @! @: U
  16. #define NICKNAME_STR "nickname = "' w) V4 K8 T( ^8 I! \* P
  17. #define IDS_STR "strid_name = "
    ; w) z7 S- |3 c" S/ r" ?
  18. //
    + H) T6 B) ?: z: w

  19. ! e* Z: w( p. l7 g; T$ A& h
  20. ifstream inf;* W, f* C1 c3 ?
  21. char *buffer;
    9 q- S! {" t; \& |
  22. 7 \( r  ?4 [3 C9 G6 \3 ], U4 U
  23. int main(int argc, char *argv[])& r  B. k3 [6 }! X
  24. {$ p0 M9 o" `5 X4 R
  25.         int i;
    ! j) T/ g, m6 q3 Q' j
  26.           ?$ Q6 o, J; z8 w4 r( Q- ?; [6 F  V
  27.         if(argc!=2){ 0 Y! e$ ^1 T/ l& A4 Y: ^
  28.                 cout << "This program requires one and only one argument.";
    ; a) S5 B9 G, ~4 R  \
  29.                 return -1;% E% S- X9 {6 @. E
  30.                 }
    / o4 I0 N" T0 Q% S* \$ g
  31.         $ C# D+ M* W; K7 y4 h% O9 p7 u1 u
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);
    # @- H  Y- A) F
  33.         if(!inf) {
    & ^* W: s/ s3 }. B5 q- K
  34.                 cout << "Error opening file.";
    6 b' l% b) c2 ]( |
  35.                 return -1;
    , |( J# n; B2 O5 @3 n: l$ F3 m* B
  36.                 }: t2 G* t) U/ R+ m
  37.                
    2 A: H0 _: r/ e% v, q. e  T" `
  38.         int streamLength = inf.tellg();
    - T0 G# F0 j" j; j. s" B3 V
  39.         if(streamLength!=-1) {: e2 i2 b( B( Z
  40.                 inf.seekg(0, ios::beg);2 |6 f0 c6 }, ^0 u0 m) k
  41.                
    8 s7 W' _' m: k
  42.                 buffer = new char [streamLength];) {3 r, |! x$ J1 m
  43.                 // Read file;
    6 w) U8 s- n0 G2 ?
  44.                 for(i=0;i<streamLength;i++) {
    & N9 G7 n) S8 C1 x# W4 R' O" y1 F
  45.                         inf.get(buffer[i]);
    ) ?. ~4 F% q0 k2 Q9 H5 A1 l' p
  46.                         buffer[i] = tolower(buffer[i]);6 E5 Q! _& P1 D5 `+ ]' c3 B0 e
  47.                         }
    : J$ A1 Z' ~4 I
  48.                
    0 q* T& l1 T5 x& F4 R" K
  49.                 /* For testing& F, N4 W* ^: w0 \$ z3 q& E
  50.                 for(i=0;i<streamLength;i++) {# x% L0 F% r" L2 k3 h4 g
  51.                         cout << buffer[i];
    # c6 W8 v: L4 I
  52.                 }4 x7 r$ t% [3 V0 L1 q4 J
  53.                 */
    0 t- a. p- K3 Q- ?( i1 a
  54.                 }+ V8 U& t9 M1 }) L( v& \) G
  55.         else {
    1 A- T3 `2 |8 I' D9 [
  56.         cout << "Failed to read file." << endl;0 G8 K" y. b3 H) d
  57.         return -1;
    2 \' }2 o9 ~& T! ^+ F( k7 ^! n
  58.         }  @( U2 i) r* B, ~& W
  59.        
    9 T9 v  s0 G1 e; f! X
  60.         string processStr (buffer);  D  h1 J1 Q# A( F
  61.         delete [] buffer;+ n) z2 U7 V  `* h/ ~- j
  62.         5 ]* O6 u4 }) J2 D* M6 C
  63.         // DUMB DUMB DUMB....
    . m2 `/ a* Y8 F8 }+ z; V
  64.         % r! J+ ~4 |! [+ T7 J) q3 M: n' n
  65.         int nextSearchPos = 0;
    / S( l7 e/ r9 a* r
  66.         int tmpSearchPos[2] = {0};
    8 h. e4 e  }, ]' `0 X# s, J
  67.         int entriesCount = 0;
    7 A  j* i) z8 \2 Z, S8 W% x
  68.         ) }8 Z( {6 k* c) F
  69.         ! S& _# c* I, h6 u: q) T. r
  70.        
    0 `( }- M; O) |. T9 L+ ~9 |9 w! y: s
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {2 y; u9 }( H+ N
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    ( i4 ?5 R& l: \4 K) G5 a: s5 c
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    ; `* D/ U; F3 U
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);4 |; l! m& x3 p6 j6 \
  75.                 4 T6 p  B/ [3 s% H  s& z
  76.                 if(tmpSearchPos[0]!=string::npos) {
    0 t. N2 v2 ~# ]
  77.                         i=tmpSearchPos[0]+11;' t# l6 C$ {8 b. I& H8 g- x( k
  78.                         ; ^8 ?: }2 I0 D( D
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ( l4 L6 G, v/ V" [
  80.                         cout << processStr[i];2 V8 m% g% V# B" G# f4 ~. H$ E5 R4 y
  81.                         i++;
    / Y/ \3 R* |+ U4 u! T7 S
  82.                         }
    1 Q" l* ]1 c" q+ ]) E* l
  83.                         7 u* [5 ?* S5 A! s3 j! k' O
  84.                         cout << endl;- ^3 y. V* @: }) J/ G6 |
  85.                         4 h/ [. n; `7 N! m$ X" R8 U
  86.                 }+ o/ [9 x8 E4 `! A0 i
  87.                 3 {5 o8 a7 s/ r" P0 m0 ]
  88.                 if(tmpSearchPos[1]!=string::npos) {# G  r- k; [$ S. ?6 j; @$ j
  89.                         i=tmpSearchPos[1]+13;, {  E/ }  N- W* S
  90.                         1 {. i3 _! r9 f4 z1 ^
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ; \" |0 C% ]" B9 o; c  B: }
  92.                         cout << processStr[i];+ g9 n5 A$ r0 M3 }! ?
  93.                         i++;
    7 _  y/ a* j' S/ M4 T2 ]! ^; k. l
  94.                         }, R! _+ z. @* r# Q# p5 l* V
  95.                         6 g! {$ A% |" Q; C% q2 \) b
  96.                         cout << endl;
    2 b% x7 F0 w0 H
  97.                        
    3 H1 ^6 I# p" z5 K. {4 Y
  98.                 }* R, Q$ z5 i. w4 D# S3 l( ~% x
  99.                 / v" p; i: V& |3 M- V, E# W
  100.                 entriesCount++;! T4 C" H, G( ^" u& e4 b0 Y
  101.         }' k' B: C# v+ r& U( D$ _
  102.         " j, q& h" Z- I% u1 Z2 R7 t- S
  103.         cout<<entriesCount;0 m5 n' ]5 c" B
  104.         return 0;8 e9 k% C5 W, n7 D0 X2 C
  105.        
    ' G/ j6 a$ r" Q: \( n2 L% I& R) v
  106. }
复制代码
Update: 最后一行输出条目数.9 v7 q; X  B- t. \
: W. V/ W1 M$ K# O
[ 本帖最后由 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 太空游戏站