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

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

[复制链接]
发表于 2008-11-14 21:54:00 | 显示全部楼层 |阅读模式
  1. // Nov 14, 2008 - by Euyis0 F8 }  s4 l5 U, W, e1 y" \. N
  2. / Y! A. M+ U& k, l+ o3 j
  3. //4 C. x* y& c# L+ q* `" O
  4. // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
    7 ?* F' O% y- K2 h
  5. // In case this is not legally possible,! T' r; |/ f; |- r3 t& @  x6 J
  6. // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.; x+ \0 d+ Z( v4 j7 M# x
  7. //( X5 {: E/ n. F4 T& k
  8. ) F" I/ n0 i4 _: a- y- B+ s3 {
  9. #include <iostream>' s% x1 j" D) O
  10. #include <fstream>
    7 k% _+ g' f) b# K- y, W
  11. #include <cctype>
    7 r6 t9 B2 Z& G& e! s
  12. using namespace std;
    1 C/ X6 f' @+ T% X$ p2 b

  13. / n% o3 z& S5 r4 \4 M3 K+ e
  14. // MACROS
    ! x  m% r( b4 W
  15. #define SYSTEM_BLOCK_STR "[system]"& [, l/ r# y! {. o3 Z5 x
  16. #define NICKNAME_STR "nickname = "2 Z7 V; ~. O' Z* ~
  17. #define IDS_STR "strid_name = "
    6 r: w. C! e# }7 r# r' b* B# a
  18. //: p) e; r) V2 Q  O5 a# p
  19. ; ?+ y5 m- `* u( p8 T
  20. ifstream inf;
    5 ?: U. y& s* E8 l' @0 y2 p  U
  21. char *buffer;
    $ m/ D- a* w1 ]  q" ~
  22. : n# v2 i( q6 J3 r: M/ m
  23. int main(int argc, char *argv[])  k2 I3 F) X! E- c
  24. {
    ' j' i8 P& Q( q" ]* W
  25.         int i;
    $ G( |1 f6 i8 }& X
  26.         2 m+ R3 S7 ?- q3 h
  27.         if(argc!=2){ 5 X* b6 J8 U2 U2 q" a
  28.                 cout << "This program requires one and only one argument.";7 `2 k/ ~; y' m- A
  29.                 return -1;
    : m/ c1 e0 h) W- _9 ~3 S- p; b
  30.                 }- N# }0 N" B8 ]' ]
  31.         * n  @$ l4 E( L% Y4 ~5 L  C. x
  32.         inf.open(argv[1], ios_base::in | ios_base::ate);
    - b; F) G. j8 J1 n( f
  33.         if(!inf) {
    : @  d7 d( }; D  c$ B
  34.                 cout << "Error opening file.";
    ! d4 q7 F+ J! T# e4 p4 ^7 i0 d
  35.                 return -1;( y2 f& I: g$ I7 j: _
  36.                 }
    6 Q/ [8 x, T# Z8 x- b
  37.                 # m. U0 h+ j7 A- F8 I. k
  38.         int streamLength = inf.tellg();2 Z, D' r2 j3 {# ~% F, O" e
  39.         if(streamLength!=-1) {
    * J) L% d7 f9 Y( _' Q) X! n) ^
  40.                 inf.seekg(0, ios::beg);
    $ f0 n  `9 u: x" h4 N9 h
  41.                
    ! j+ c4 }) d2 Z9 @1 d
  42.                 buffer = new char [streamLength];4 r2 Y- S: j$ U
  43.                 // Read file;
    $ M% L+ j! L1 M& O! x: K, m
  44.                 for(i=0;i<streamLength;i++) {# U, V) c7 ~0 ~. l5 {! c2 {
  45.                         inf.get(buffer[i]);
    ' v: U/ d  h6 p, b0 |4 a
  46.                         buffer[i] = tolower(buffer[i]);6 O" B/ Q6 J; I! {- f& ~2 Y4 s$ J
  47.                         }0 y! R! e, w# u) K( ~* p  c
  48.                
    / e) [, Y" n- G
  49.                 /* For testing2 A( t7 Z% w+ f) V$ w: h) K/ L, n! p
  50.                 for(i=0;i<streamLength;i++) {
    & W) s& |, p7 s1 u! |5 c
  51.                         cout << buffer[i];
    * \7 {4 J* v1 r- {! ?9 G. r' X
  52.                 }& N, l* w4 o" e- D* ^
  53.                 */3 r, X) ~% z& `" i
  54.                 }
    : J9 L* F3 l5 J
  55.         else {
    + Q+ N0 G4 B+ I% v& {2 n$ g. D
  56.         cout << "Failed to read file." << endl;
      L' M& F' o+ f( A
  57.         return -1;
    * T0 r2 Q. Z0 A+ G# W! ~
  58.         }4 D3 ~) L3 q. M+ b0 [
  59.         ' f, t- [" r2 V, D
  60.         string processStr (buffer);5 i8 \$ d) P: a- ?2 [1 ?- p6 n" t
  61.         delete [] buffer;
    # B; c7 b& K$ V- R$ V* ^% r- |
  62.         , B0 G4 L3 y( F6 ^
  63.         // DUMB DUMB DUMB....
    ! g( d0 N8 c) T1 N  @/ g
  64.         - a/ P# [" ~' m: R. ]- p6 z& z/ y; f+ N
  65.         int nextSearchPos = 0;
    & K' E$ E0 l$ o# s
  66.         int tmpSearchPos[2] = {0};. Y" u) i0 T: W+ |: L
  67.         int entriesCount = 0;2 |. k1 \7 j5 `3 a* [( g
  68.        
    6 Y0 N( O2 z% ]: ?
  69.        
    / A. p8 Q! s/ N0 N
  70.        
    - M. F$ m6 O& S+ @. Y
  71.         while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {4 Q- c, n- N, O$ a# D
  72.                 nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;: u* R! o5 J4 H) r9 Y/ Q- l! T
  73.                 tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
    ( F0 ~$ K; a) z3 F. j
  74.                 tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);
    7 U* T1 E; |+ q3 Y# k4 w
  75.                 : p; I7 }; q/ p& R
  76.                 if(tmpSearchPos[0]!=string::npos) {9 b) ?  ~# r* g4 y1 @0 G
  77.                         i=tmpSearchPos[0]+11;! T) y- e& Z$ B# Z) X" S$ Z/ P
  78.                        
    - [" u8 U2 d! X8 O$ @: D$ @6 h
  79.                         while(processStr[i]!='\n' && processStr[i]!='\r') {
    ' U# i8 v0 ~& ~9 N2 L' Q
  80.                         cout << processStr[i];
    , u) l: v  S5 L1 B' W" ]
  81.                         i++;
    ( o3 N/ t6 Z* e
  82.                         }1 l# X, r; F5 O1 W
  83.                        
    ( Z7 @2 S; I0 ]  R
  84.                         cout << endl;3 `; R- j2 h2 Q! m4 y9 h
  85.                        
    & |& C" `1 ?8 z) p* [; i! H/ C
  86.                 }) c" }7 f' l$ u9 p
  87.                
    8 y6 M& W% x* v- V) s- A
  88.                 if(tmpSearchPos[1]!=string::npos) {. K9 {+ D3 m4 Z0 w% C
  89.                         i=tmpSearchPos[1]+13;! S* Q# @' q! S/ i; o3 H; g
  90.                        
    ! m* ]0 F$ q; K1 M: _
  91.                         while(processStr[i]!='\n' && processStr[i]!='\r') {. n: T* ~; D: n2 G" Y, {
  92.                         cout << processStr[i];
    ' h; J/ x# A5 y# u& E
  93.                         i++;$ i+ d  ~( z2 n4 S, t5 E# q/ f
  94.                         }7 Q' a# i4 S% g; R- H: [; H2 r* P' `
  95.                         ; W8 n% C6 {8 l6 `% U4 u: z
  96.                         cout << endl;
    # L6 S7 _% m0 l5 Y& o: [% h: N1 M
  97.                         ! \- f* p4 f( O5 T6 z0 U8 [# ~
  98.                 }
    / ~1 ?( j6 I$ N) |1 w
  99.                
    - |8 E7 ~5 T/ Q, `
  100.                 entriesCount++;5 i7 [1 \+ T1 \" l$ r
  101.         }
    % ^! @2 u. i! I9 P
  102.        
    : y7 X' ]. d( A! e/ ^8 D
  103.         cout<<entriesCount;
    0 G' y, u) A4 f3 }$ ?5 ~
  104.         return 0;, A0 C6 q- M( Y9 u4 j# M! h
  105.        
      Y& _. K2 x2 z: W7 l, H: K$ O
  106. }
复制代码
Update: 最后一行输出条目数.
! R# I! h4 [% z! s- B+ m
* N2 c' S& S2 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 太空游戏站