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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis
    ! C6 F, ^2 G% g0 W
  2. ( ?) ?& p3 E* F# c8 K
  3. //
    8 P# z% Z5 {$ b$ O& s/ ]
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.1 v7 B- B9 T6 H8 s
  5. // In case this is not legally possible,
    , D- _, \$ o# L1 }" I
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
    ( h- h% `" {& z1 \9 k
  7. //2 ]7 U- H0 c, X! h9 A
  8. $ Q, a$ g$ \9 p" Q. p7 a
  9. #include <iostream>' n3 s8 w7 _8 y7 ?
  10. #include <fstream>
    " i+ D9 Y' Z) _  X
  11. #include <cctype>( g( ], h0 T. Z" U/ F
  12. using namespace std;
    * p, W% \+ j9 M: d" N
  13. , y, T- P# G- z( j1 A
  14. // MACROS2 |5 P; m' p5 ~0 v
  15. #define SYSTEM_BLOCK_STR "[system]"
    ! Y* [1 R0 ~9 z6 N+ e5 C9 R! x0 A2 c
  16. #define NICKNAME_STR "nickname = "2 S2 W7 U( w& V
  17. #define IDS_STR "strid_name = "
    " B7 m$ ~! {. ~; M$ N/ ^1 d% v
  18. //4 o( D% N5 t. d( k+ s# H1 Q

  19. 4 Y; V  V4 e, F5 L2 @3 Z2 Q
  20. ifstream inf;0 Y5 F+ x/ F* m  |4 b7 Z
  21. char *buffer;
    ' B  s2 ?6 h' I- v' X& g
  22. 1 O; J' b* u* {' _9 K
  23. int main(int argc, char *argv[])& a: g8 b' C* g# \, B) x" T
  24. {0 q8 c" I8 R3 N9 r( n
  25.         int i;
    / e$ C+ V" D5 D1 y
  26.         & U7 f% y4 J( m, R, [9 R
  27.         if(argc!=2){
    4 v( q5 T: D/ Z: q
  28.                 cout << "This program requires one and only one argument.";7 o  z5 u+ u2 y/ U% l
  29.                 return -1;
    4 W; w9 \1 B' f) c5 H: t
  30.                 }9 Y" N8 x3 J7 H* U1 G
  31.         , `: p! M( x6 I- u% y5 j- o
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);5 ]7 T; S6 J3 a& s# ]+ N
  33.         if(!inf) {: L; f' v2 ^2 q0 I
  34.                 cout << "Error opening file.";
    3 O) Y' E; J, U( f0 U% O+ F
  35.                 return -1;
    - C9 P* R" N8 L' k2 {
  36.                 }
    8 _6 s$ D7 i7 x9 d3 O$ }2 R
  37.                
    2 S4 ~& P! k4 o+ A6 {$ o
  38.         int streamLength = inf.tellg();
    7 y7 c' X# u5 _9 ~
  39.         if(streamLength!=-1) {
    8 `3 y* `2 e+ I/ d+ a& _
  40.                 inf.seekg(0, ios::beg);
    $ V) m5 Y# A7 z8 o0 G8 h  ^" _
  41.                
    % n, c( Z+ |2 n9 V) H
  42.                 buffer = new char [streamLength];
    % c0 \$ |- Z5 z$ m
  43.                 // Read file;& x$ e& G% \! O9 b
  44.                 for(i=0;i<streamLength;i++) {
    " d  C  r% L% t& d$ W/ l
  45.                         inf.get(buffer[i]);% ?1 t# k, I9 B+ _5 \: f, ^
  46.                         buffer[i] = tolower(buffer[i]);
    & S  N' ^" j3 T4 k2 B
  47.                         }9 L, L- d# W" |
  48.                
    & W0 o: _+ q+ f2 P. v
  49.                 /* For testing" w! z7 J* f1 g% V. x7 }; d
  50.                 for(i=0;i<streamLength;i++) {
    " F4 p" M" O8 [- y! T$ G. A
  51.                         cout << buffer[i];
    ( e0 y8 f  I  c9 F! i2 h
  52.                 }( t6 |. d& l# G
  53.                 */5 A; D  I! `+ d' q, q. G: Z
  54.                 }
    # k+ x- r( b  `3 @9 u* W, a
  55.         else {* i  E6 f' @1 {* k4 |, n
  56.         cout << "Failed to read file." << endl;
    . l, c- X& _0 x) D3 l- n
  57.         return -1;
      V0 u! ^! r4 P$ L
  58.         }
    : c) x6 ~- E2 Q$ [) L7 W7 N
  59.         " Q) d7 `6 w1 ^
  60.         string processStr (buffer);
    % j9 K8 B( Y) m/ G+ _9 V
  61.         delete [] buffer;4 |- q  I) Q4 s- i
  62.         - J6 f4 ?7 X# e0 F
  63.         // DUMB DUMB DUMB....
    5 S( R; d6 Z3 w0 B
  64.         - m" O0 i1 v( ^; `+ Q! j
  65.         int nextSearchPos = 0;
    / t1 u8 ]% z9 N- n, I3 Y  R
  66.         int tmpSearchPos[2] = {0};
    # O' q. X( N2 H' U' W* Z' `  d5 s" a
  67.         int entriesCount = 0;* Q( @' j- ^/ O
  68.        
    5 ~2 T9 B' q7 ^
  69.         4 N" k  p$ v5 x5 |0 T- R$ n
  70.        
    * W. _0 N9 g& F: ]- {3 |% G; J
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {
    ; ]) |% T& h  k4 u
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;( H( ^" R( {2 r7 b% f6 W0 C
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    . o+ i( I* [" U+ Q" J4 O
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);+ @  e5 u; k* L: K) T% h
  75.                 " b, o( q( I  v' c$ N# k" k+ Z
  76.                 if(tmpSearchPos[0]!=string::npos) {) }4 M, L6 U) j* n& E2 u  Q
  77.                         i=tmpSearchPos[0]+11;
    $ n0 Z  T6 m3 I- J) D9 ^
  78.                         0 A) B) o* s3 Q; a
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {/ l/ y3 y! q1 q
  80.                         cout << processStr[i];+ y* w2 r  O# w% v: E0 G
  81.                         i++;2 R5 @/ a; k, p
  82.                         }% P9 r* Y# H8 i5 {/ l
  83.                        
    0 E4 s8 U, k* |. {# _! n* {
  84.                         cout << endl;* h7 l. v! h, ?# M" c. Q; _/ r
  85.                         ! x$ R9 e0 y2 p
  86.                 }
    : N$ b6 [" [. v
  87.                
    ' |- T, t. m" _( ~9 `" a( u
  88.                 if(tmpSearchPos[1]!=string::npos) {6 n( \" N' e  ]: x9 w3 O
  89.                         i=tmpSearchPos[1]+13;: S1 t6 z- T& W3 o% X
  90.                         - ~, x0 s! v& y2 G  ^
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ' V- h: \; X& I- y! f9 r; t! ?7 H7 r
  92.                         cout << processStr[i];; Z& A6 A/ N; W, U' E/ W
  93.                         i++;% t; C, F" i: A
  94.                         }& _) a0 u# ~( q/ t
  95.                        
    6 I0 t+ B4 c0 z( R
  96.                         cout << endl;2 C6 T) T4 l! T& F5 e& Q) b+ ]
  97.                         * w+ B/ C: N" o) n" g# e
  98.                 }
    " O4 c6 U8 |" h. ]- o9 O! V
  99.                
    : w9 I' B6 M3 e  t, m
  100.                 entriesCount++;8 ]$ E, o( d( D, }
  101.         }
    5 ]) W2 s! P4 |9 w) @
  102.         & \6 c7 m- W) ~9 [7 R5 B
  103.         cout<<entriesCount;0 H) f8 K9 A& w. l
  104.         return 0;& C9 R5 ]8 V4 N$ R1 x
  105.         1 b2 E* K* m9 X
  106. }
复制代码
Update: 最后一行输出条目数.0 {' v! Y  H" |% ?3 a/ d

7 [) k: `' m( G  g[ 本帖最后由 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 太空游戏站