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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis
    ! R: z+ C% e& O6 i' t0 D3 }
  2. . f, [/ g, M) ?+ e+ ]+ ?
  3. //8 C/ J6 m! _. i5 h+ y- r( m
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
    6 c9 l+ b( Z  e. m
  5. // In case this is not legally possible,
    7 @/ J, ~& [7 X: N, y
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
    * v" v2 P, G( t& _" c
  7. //
    ' Y$ n( Y* z9 d4 ]& |& X5 c

  8.   m9 z5 }& v# x* f% Z" p$ n- k. ?
  9. #include <iostream>: m: u! e) ~: O3 v
  10. #include <fstream>
    & Q' y8 e1 J/ m" i* `. _, @) w* {+ i; B$ ]
  11. #include <cctype>$ ]0 F+ |) h' v: d: O0 l, C; n
  12. using namespace std;. I! `8 s3 ?" [

  13. 9 B4 V! L, D6 u, S/ E1 s$ e6 j, _
  14. // MACROS1 Q9 L5 O0 O5 J. N. F6 z
  15. #define SYSTEM_BLOCK_STR "[system]"
      e- N+ [0 b) A
  16. #define NICKNAME_STR "nickname = "9 R% k) j2 [6 K5 }/ M% U( z
  17. #define IDS_STR "strid_name = "1 T2 l7 q% P% r' U4 l, {
  18. //% h0 U0 V' S; S0 m
  19. . b1 Y5 O- b9 e2 G
  20. ifstream inf;
    # Z3 l* H' s7 F
  21. char *buffer;* I, f4 z! D" f; R
  22. ( C6 E  T% U4 k  z- Y/ S
  23. int main(int argc, char *argv[])
    . ~! n! y" a, u# F$ f: P
  24. {
    ! G+ I$ K  G7 R' v+ j2 w  D
  25.         int i;) P3 G9 ?0 ]! z5 }5 E0 H0 ]
  26.        
    . y8 C4 h0 L! b1 y) ^7 R+ q+ m
  27.         if(argc!=2){
      S6 v. Q( p) a1 K( F
  28.                 cout << "This program requires one and only one argument.";6 T+ H  B. s$ r3 [0 f" o+ Y* \
  29.                 return -1;0 R7 }1 T% P& {! ^
  30.                 }  r, r/ n6 O+ V# e2 x& r
  31.        
    / C  h& s8 I/ K, c" G0 v" D
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);% s$ W0 s3 s, u
  33.         if(!inf) {
    ! g; ~3 P- o# j
  34.                 cout << "Error opening file.";
    , d  N" z, V) R5 u+ L
  35.                 return -1;
    : |& X4 N7 S. U3 ^1 D# P; ^
  36.                 }
    8 K" ?! e4 Q8 t6 p
  37.                 : B1 q0 }; Y7 S+ k/ x9 A' c* O, a0 j
  38.         int streamLength = inf.tellg();
    2 i" j2 B" A- E0 ]$ z
  39.         if(streamLength!=-1) {# z9 [/ |4 E  E4 a+ v  R$ @& {
  40.                 inf.seekg(0, ios::beg);% ]% y, `4 e5 P
  41.                 2 M# Y% f/ }  H
  42.                 buffer = new char [streamLength];
    2 @2 P* P* ~, i+ y
  43.                 // Read file;
    ! y8 P: C$ @8 B! D, \
  44.                 for(i=0;i<streamLength;i++) {
    + P! C! z; U" w4 v+ z& d: P
  45.                         inf.get(buffer[i]);
    ! x. A- a5 a. E5 W4 T, a
  46.                         buffer[i] = tolower(buffer[i]);3 [# X5 y2 A: V1 O) x% M! |
  47.                         }6 m% p, c6 N8 |
  48.                 / B6 I5 F. j6 U9 }/ X4 |/ v
  49.                 /* For testing
    6 l7 V4 d, c& K' O- c
  50.                 for(i=0;i<streamLength;i++) {" B; s8 d8 L8 `+ [9 e! k
  51.                         cout << buffer[i];$ ^# f: @1 L* _& p  B! R1 \
  52.                 }
    * W$ h1 v' z. ]9 Q& M
  53.                 */  J4 G1 G4 f/ e
  54.                 }1 O2 J0 C, t) |$ m( k) ?$ c" M
  55.         else {
    ' i: \. U4 r0 ^. H$ z/ B! f+ e% f
  56.         cout << "Failed to read file." << endl;0 X7 T3 N9 ?. k- S  `
  57.         return -1;' J' A  l: A% C5 i
  58.         }
    ; v9 c, B) c- K' z0 [. F! a
  59.        
    $ @3 W- L8 ~" e" H! O
  60.         string processStr (buffer);+ f' x7 o  m! W, E: M
  61.         delete [] buffer;
    # L- e+ @! U/ r: q! K
  62.         $ f4 }6 j+ J; m1 k
  63.         // DUMB DUMB DUMB....
    3 L* V% U, `4 b8 z
  64.        
    4 |! F$ v1 j! W8 v7 Y' u
  65.         int nextSearchPos = 0;) S  T1 n0 r( A: C; E, ]
  66.         int tmpSearchPos[2] = {0};5 b3 d; I' T5 \/ K% b1 @0 B2 J
  67.         int entriesCount = 0;# n2 X; q. ^& }) b( i- \
  68.         9 b/ |! y% S  j$ @* c7 k
  69.         + i, n, _$ }  D# Z# S
  70.        
    ) b" }( ]0 Z2 e2 z) ]
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {. z8 N8 y" r5 q4 ^3 I. Z) k# n
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    ( y- |& C  a' R
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    ; Q% N, Y) D( q* B
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);' m" v1 w. T9 Q/ G0 _6 p" @
  75.                
    ( X2 E$ z4 F3 y
  76.                 if(tmpSearchPos[0]!=string::npos) {
    5 s: z& L; [" e9 B! h
  77.                         i=tmpSearchPos[0]+11;+ h% p" y! h- K0 s
  78.                           i/ Y! Z! H5 Q: y+ \
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {8 s; \% r" V9 F; T$ v5 S8 @8 X  T
  80.                         cout << processStr[i];
    - I6 X* m' g# S' \) j: m( z
  81.                         i++;
    8 Q& ^0 j# E) k
  82.                         }. h+ c  _+ @8 R5 O: o! e
  83.                         3 ?4 A: {- X- D* W
  84.                         cout << endl;% V# W) A5 ?2 W  S( g* ]- [: _: u
  85.                        
    " x) ^; ?, X1 B
  86.                 }
    1 k1 E6 [; ^5 T- i
  87.                 3 r$ x: @" V5 p  B! a, ]" L
  88.                 if(tmpSearchPos[1]!=string::npos) {  J0 V% P% r8 s# {
  89.                         i=tmpSearchPos[1]+13;
    . K. p, u: w4 @" G6 W3 z" ~
  90.                        
    & n8 i) h$ `& Y
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    6 \( y4 o. X( H4 x
  92.                         cout << processStr[i];. C8 f. P- M# d! c3 L
  93.                         i++;
      T! q( u7 g9 G2 V: m, a
  94.                         }! [" l6 k  M) J% q8 b: y! k9 ]. }
  95.                           T' h* T) D) J/ ?( {+ j6 f5 J
  96.                         cout << endl;7 |1 G5 O9 ^3 t# j) e- F
  97.                         & w( h: U* l$ _$ r
  98.                 }
    5 H: B9 F7 Y' q% ^' d
  99.                 ; q# D9 |1 i# Z4 g
  100.                 entriesCount++;% X; j  Z1 m3 E+ @4 [6 n$ g
  101.         }" d% P/ f: x' N9 I" Y& }$ {
  102.        
    4 |$ C' E% P* S! b
  103.         cout<<entriesCount;. @* e( \: O; X" Y  M' O* Q
  104.         return 0;
    + m4 X6 C  h% {
  105.        
    5 J7 u6 I. ^% Y' _7 v! _/ q
  106. }
复制代码
Update: 最后一行输出条目数.9 d: ]) t* `5 f& g+ Z. d* I0 m

3 V. }7 q- i% P+ O; |& z; s[ 本帖最后由 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 太空游戏站