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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis9 f! o% q1 F) U4 _! @- c" ~, Y

  2. ) h. \* f1 T, v. A
  3. //
    - E7 L. `  l! K( r# j. A8 y7 @' V
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.. H: J" s: f3 p. z: x7 ^/ m
  5. // In case this is not legally possible,
    0 H3 u( x* s1 C1 E; \
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
    * X5 l! s( ^" F! `- r
  7. //
    7 a) ?! K& W& e' T3 _2 c
  8. 2 b- ?* p9 H6 Z( S. i/ t' o! ^( B
  9. #include <iostream>
    5 B# g% g2 r) j2 I5 ^' ?: B
  10. #include <fstream>
    " z0 r7 [5 D; N2 ~6 n
  11. #include <cctype>
    0 z- x6 |. }1 J8 A
  12. using namespace std;
    $ O" a/ @' N/ N) ^" t

  13. * J( |& y8 p( T
  14. // MACROS$ s6 z0 i& w2 l
  15. #define SYSTEM_BLOCK_STR "[system]"
    ; W, }# V+ _9 ]) r
  16. #define NICKNAME_STR "nickname = "
    8 ^# k- z' W; N6 I. ]" L( W
  17. #define IDS_STR "strid_name = "
    ; V: T; z1 ~. {! r( ?3 g6 \' R
  18. //
    * v% j* s( A$ U3 o9 \, J

  19. 4 L8 x! o  s% O4 U
  20. ifstream inf;, t# T0 C- p: W- o/ j. Q1 |
  21. char *buffer;% t$ g  l, L' h  e  m! n
  22. - h  V. t3 r! x8 J/ \" z
  23. int main(int argc, char *argv[])
    ! }4 n" {8 I  w) g; A
  24. {9 J( i0 `  o3 p1 G/ h
  25.         int i;3 L1 Y8 a% J/ `+ q( b
  26.         ! e; G- Q1 C& }; J. F+ k1 G3 o
  27.         if(argc!=2){
    5 Z/ J$ p9 p+ x  [! c6 J
  28.                 cout << "This program requires one and only one argument.";
    . c9 ?9 a6 D1 _. m4 C" t8 z  z
  29.                 return -1;. G7 i/ `9 M, K8 ~0 @) d' q
  30.                 }
    - p/ l0 ^. Y& N. @
  31.        
    3 ^+ P& u$ U6 c1 m. `2 W
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);' t( y9 H0 B9 W+ Z. b
  33.         if(!inf) {, j( C# \0 C# t! ^
  34.                 cout << "Error opening file.";
    ) n" U( w" a& \( T( {2 `2 F
  35.                 return -1;
    ' b/ m& p- I* F9 j+ I) f
  36.                 }! J0 N3 X" P# @- U2 Z: B
  37.                 7 q$ U% l$ X' s* Z! c
  38.         int streamLength = inf.tellg();
    2 i  U6 X5 |' t4 y! g
  39.         if(streamLength!=-1) {# b, u) y- D7 h6 H  Z" p( G& ?
  40.                 inf.seekg(0, ios::beg);9 {7 U, @! K  Y2 N
  41.                 3 ?+ _3 U% g! g- v% H
  42.                 buffer = new char [streamLength];: E6 d6 M7 m: Y
  43.                 // Read file;6 d: Z2 Z* q: m! Q. e. c& H
  44.                 for(i=0;i<streamLength;i++) {  h) Z$ d& N- x- @- P- ~
  45.                         inf.get(buffer[i]);) [* t' C7 {" E4 L/ y2 ^
  46.                         buffer[i] = tolower(buffer[i]);
    : P% q8 Z% Z9 q
  47.                         }
    7 v, S- V. n# k) R
  48.                 ; H$ X/ V6 h$ P9 h  \' q! \3 \
  49.                 /* For testing- L* \4 j) A/ }, S0 ^
  50.                 for(i=0;i<streamLength;i++) {
    4 ]" ^* Q- ^! u  ~& J: {
  51.                         cout << buffer[i];' M' g7 ]. i& F2 e- ]6 K5 `
  52.                 }
    - T# S1 z6 [8 J3 _- J2 U4 E, y
  53.                 */& |$ R0 h) {3 m  c5 J- }' `1 N# P
  54.                 }
    6 w3 _# M  H1 X' H! W. d% R/ `
  55.         else {* ?! G7 V5 ^2 i) j: p% }
  56.         cout << "Failed to read file." << endl;
    # b* D& h. z3 g# {7 ~' f8 ^0 b0 P
  57.         return -1;
    ! [1 c5 k& h& x" R7 v
  58.         }/ f7 R* P/ ]3 g% J' n' J& [
  59.         . V3 K; w3 \% o: |: r0 a; e
  60.         string processStr (buffer);+ Y$ x2 [& H, ?& Z4 L
  61.         delete [] buffer;
    9 }% o% X" W$ _0 y8 z% i
  62.         0 m$ @: S# O1 C* g/ o" ]) _# K
  63.         // DUMB DUMB DUMB....& J4 b# j& F; K; A% Z
  64.        
    ' h# ?, t, U6 a6 }9 A
  65.         int nextSearchPos = 0;  U2 T1 B: Y* s7 {
  66.         int tmpSearchPos[2] = {0};: Z7 u1 @# ]! a' x' L% K! q
  67.         int entriesCount = 0;* y; J" R8 ?! V6 ^# o
  68.        
    2 c8 U8 ?5 D2 V" p" v# ~2 d
  69.        
    5 u: o9 x2 @/ U0 b: Q) t# c. x
  70.        
    / Y' @1 O% x3 A3 {3 ]! t
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {
    3 {! p6 B0 E6 C, {0 @$ v* k
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
    + X. V0 w0 L+ J4 P, X6 k- J- b
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);0 \$ u/ ~7 n8 A6 h, q
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);
    , t- ^( P) Z8 ]
  75.                
    5 }1 |# l" S0 O  V
  76.                 if(tmpSearchPos[0]!=string::npos) {
    7 i- N9 Q; x. T/ V; X7 _
  77.                         i=tmpSearchPos[0]+11;
    ! n4 o$ Z5 p7 D: i
  78.                         - [* j/ D  E, q( {( g4 k# k0 x: s. V
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    9 c# o( x- V, c. P2 j. X  ]
  80.                         cout << processStr[i];
    # f, Q: c" y' S. Y8 Z0 n
  81.                         i++;
    $ r+ `, S1 ?) \7 w; A! S
  82.                         }$ y6 x% x+ ^; d) ^! _* L
  83.                        
    , z4 s$ l6 w; B  G
  84.                         cout << endl;
    - l. |% b2 t, I
  85.                        
    6 X% A; ?; @' D" B
  86.                 }
    ( o1 W: G: G3 x& B
  87.                
    # d) x# _( C- b3 L0 j
  88.                 if(tmpSearchPos[1]!=string::npos) {, r: L& e$ I$ U
  89.                         i=tmpSearchPos[1]+13;
    + k, G# w: O% s- Q
  90.                        
    4 v8 V3 f! m5 y) V1 t; ]
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {7 L# @/ ]$ Q; @- L/ x
  92.                         cout << processStr[i];8 G$ ?- Y( m. f) A. }
  93.                         i++;; p! o6 T, {5 G
  94.                         }
    $ Q$ r" q8 c8 |( b
  95.                         / W9 o/ o  `7 d- H' r5 p/ J3 G0 r
  96.                         cout << endl;
    ; L# a& S5 [+ e+ r
  97.                         ; J% _6 u8 d, x$ f4 J- v
  98.                 }
    2 H, w9 S5 B( h! J6 e
  99.                
    , q3 }1 ?- M8 k3 s* Z
  100.                 entriesCount++;
      w; G; X6 r# h/ |& V2 e) b
  101.         }
    9 n; T% `! K" r7 }; D2 K- g
  102.         0 k/ q2 B( x5 ^6 V* c) G- d
  103.         cout<<entriesCount;
    " N0 ]* j( u4 Q( w1 R- [& [
  104.         return 0;
    9 J* t1 W0 U/ z9 E$ c  D' ~; |0 [
  105.        
    + N. G5 d9 m5 P
  106. }
复制代码
Update: 最后一行输出条目数.' h0 H+ R6 h/ K4 ?" n$ p% m5 O! @
, y& k& c% C0 Y: n8 z" @
[ 本帖最后由 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 太空游戏站