- UID
- 1023
- UCC
-
- 声望
-
- 好评
-
- 贡献
-
- 最后登录
- 1970-1-1
|
- // Nov 14, 2008 - by Euyis
' `+ F9 j- r$ B3 Y - 6 w z; I7 W* k
- //
o$ n6 V3 C1 E - // I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.! X* Y$ L' q$ b3 p
- // In case this is not legally possible,
, h5 k o3 V' ~' c: }+ ]( Y8 U - // I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.$ b2 _; |0 S0 B; v
- //
5 ~6 ^$ v: G9 f" o D/ X - 8 y9 }# ]6 T1 R: G1 O
- #include <iostream>* |1 k/ Z/ K- [' c9 J" J
- #include <fstream>
: ]6 G: @8 O; ~1 @' \; K3 J Z - #include <cctype>
; [) D" C5 B4 e! J' R3 v - using namespace std;
+ ` _$ y! O5 I0 o" g4 B - ! d0 r4 h( l& Y7 ~
- // MACROS
! {& }# m5 Y( N - #define SYSTEM_BLOCK_STR "[system]"
0 N0 F" j/ ~, X9 p - #define NICKNAME_STR "nickname = "; i6 S8 n- S# N- ]
- #define IDS_STR "strid_name = "' v( X( t" P. I; y; r% \; v
- //
0 z! o) Q1 v3 j5 b- ~3 M8 J
H% E. }. w P* E- T! Z- ifstream inf;9 Z0 R, o* s3 P
- char *buffer;
X. ]; S" }6 L5 i! t+ n - , o7 f) G5 z0 u5 N; u
- int main(int argc, char *argv[])
* }& e% J" \$ ^4 `& m - {
$ c2 T, F3 F3 E( o3 h - int i;" | E- n. N# W) {; u% c/ d
-
) H; Q/ q6 n2 A% m* j$ p- V. B - if(argc!=2){
0 X0 D/ d! c. I n3 z - cout << "This program requires one and only one argument.";
- c: N: |: C- {4 L - return -1;
* ~& ~# ?3 R a- P - }
# w9 @ D: ]7 w; w7 k' m - + I: m6 Z2 E, O* e, e, _& l
- inf.open(argv[1], ios_base::in | ios_base::ate);" }! n7 u, G5 C4 B% C: q
- if(!inf) {
1 m( [, y6 Q8 v v - cout << "Error opening file.";
2 t' b: N9 l1 Z/ c: ]1 _8 P - return -1;
% W* C) f5 h" y: W - }( E4 ~1 g& r! t: n
- 1 w: Q& F) u. z. ~1 u" l
- int streamLength = inf.tellg(); H4 D) V% T4 g# R( w. m: `1 D
- if(streamLength!=-1) {3 m7 L. a& `# r1 G% s) k9 t$ W! |
- inf.seekg(0, ios::beg);
3 f F# I, m+ o( Z) s, s: _ - 3 ^* `" y2 A2 m
- buffer = new char [streamLength];! O( N& N/ [ N5 }+ G9 [0 u
- // Read file;
7 Q+ ]; e# u( M0 g - for(i=0;i<streamLength;i++) {6 C" w9 I5 |5 `8 X- }$ D
- inf.get(buffer[i]);* M; J% n4 E5 `3 Y4 K
- buffer[i] = tolower(buffer[i]);
7 t( h" m% Z! z9 L7 }/ z1 p6 _0 g - }1 P& `3 {; u" w* v7 V
- : ^; H- @$ G% E1 x
- /* For testing! G: {, r& A# p- T6 _
- for(i=0;i<streamLength;i++) {$ \5 \' n# z# c3 L* ]
- cout << buffer[i];( B) i. T# g" G9 u v
- }
1 ^2 v X. J" \, `2 _7 L5 z* v - */' R' B% @8 t! j0 v
- }) ]' {' a6 y, P. ^( r' f
- else {7 P- I3 R U: X2 y
- cout << "Failed to read file." << endl;
' }# o' |7 F6 q5 b/ H - return -1;6 N4 L/ i7 x+ p) j' }
- }
! R$ a* P x) I/ v -
/ k6 U. Q3 [+ e - string processStr (buffer);, J% c7 @% [' l% Y! v7 V
- delete [] buffer;$ e, J, f- x' K/ ^" n3 o k. q% @
- # }' b: c( D5 v4 Z/ p
- // DUMB DUMB DUMB....
, V! ~1 N+ M$ ~ - & U) i7 X: d9 G A
- int nextSearchPos = 0;
$ s1 r" A; H% e4 b( [8 {& M - int tmpSearchPos[2] = {0};
5 A, R7 g: j- J6 n1 R - int entriesCount = 0;
- d' b1 W2 K, S9 R! } e1 C1 H - . F. j( H4 s O
- ! o5 M& r$ n& T
-
8 u0 m" L' O# G3 S - while(processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)!=string::npos) {9 u5 @4 L5 o% Y# B
- nextSearchPos = processStr.find(SYSTEM_BLOCK_STR, nextSearchPos)+8;
: i7 d$ X6 W, r5 M$ {0 ~7 n- P - tmpSearchPos[0] = processStr.find(NICKNAME_STR, nextSearchPos);
2 E- I5 ?" G2 T/ c, M - tmpSearchPos[1] = processStr.find(IDS_STR, nextSearchPos);
+ `) ^- W; p- b+ x - ( h1 a8 `( \$ h5 j% z5 b
- if(tmpSearchPos[0]!=string::npos) {
8 E0 i; R2 \. q' t" ^ - i=tmpSearchPos[0]+11;5 \( i [& \3 U) K! M, W' ~5 ], M
-
* Z- }+ g/ }# N" S - while(processStr[i]!='\n' && processStr[i]!='\r') {$ f' ?: M( t; F! l6 k
- cout << processStr[i];
( x" W2 i% L3 T5 [0 ^: a* i$ P3 x0 q - i++;
. J* q$ n: G4 D* G - }
- V' ]6 a0 u' Y - 0 a5 B. y2 @9 O- d4 o$ S0 F8 Z3 O4 p/ C
- cout << endl;% U. ~1 [: g$ H! u; z
- 2 r/ X4 ]! B' E: r$ b
- }# @8 k4 Q5 A: E% A
- 8 r3 Q/ S4 l4 ]- ]. d" k
- if(tmpSearchPos[1]!=string::npos) {
; b" q1 {, \5 Y% ~) R# G - i=tmpSearchPos[1]+13;3 }7 h8 t: K( ^8 L
- ( C p n# Y( u0 _7 U( a
- while(processStr[i]!='\n' && processStr[i]!='\r') {9 U8 W5 @1 b/ ?) A3 J8 m- {8 J
- cout << processStr[i];
" Q; _" U/ \# }9 M) Y - i++;
9 {+ f4 b' N/ u# l4 V - }1 [5 W6 ^4 m7 c1 j2 `
-
) |! @; ? _* Z% D0 {5 n - cout << endl;( b# [3 d" H& U7 W
-
! E% V7 Y& _/ B7 c - }: H& H+ d% o, s! R5 V; l
-
& n. n P8 p4 x. O% c - entriesCount++;
4 @9 ~& i' r. S. g - }( h4 y8 k6 ~. h1 a
- 9 t& s, j4 \. f+ x+ w
- cout<<entriesCount;
, e+ h* N3 R6 Z r& w* j+ D9 D - return 0;
5 K2 a8 ]' n$ a/ y3 @8 O6 A# U - 5 Q. y7 _! _) p
- }
复制代码 Update: 最后一行输出条目数.: ^% E- B, m% e5 @7 i- L# i9 R& @3 Y0 g
- X! y5 {. ^5 b) ]( L[ 本帖最后由 Euyis 于 2008-11-14 22:21 编辑 ] |
|