際際滷
Submit Search
File trong c_
0 likes
214 views
H畛 L畛i
Follow
1 of 9
Download now
Download to read offline
More Related Content
File trong c_
1.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ Ti li畛u tham kh畉o: FILE TRONG C++ Lu畛ng Tr動畛c khi ta c坦 th畛 lm vi畛c v畛i file trong C++, ta c畉n ph畉i lm quen v畛i kh叩i ni畛m v畛 lu畛ng. Ta c坦 th畛 hi畛u lu畛ng l m畛t k棚nh (channel) hay m畛t 畛ng (pipe) m th担ng qua 坦, d畛 li畛u c坦 th畛 動畛c trao 畛i/chuy畛n (flow) t畛 ch動董ng tr狸nh t畛i m畛t thi畉t b畛 nh畉p xu畉t. D畛 li畛u c坦 th畛 動畛c g畛i ra t畛 ch動董ng tr狸nh t畛i c叩c thi畉t b畛 xu畉t nh動 mn h狸nh, m叩y in hay file,... qua lu畛ng xu畉t (output stream) ho畉c ch動董ng tr狸nh ch炭ng ta c坦 th畛 nh畉n d畛 li畛u t畛 c叩c thi畉t b畛 nh畉p chu畉n nh動 bn ph鱈m, file,... qua lu畛ng nh畉p (input stream). V鱈 d畛: - Ch炭ng ta 達 lm quen v畛i m畛t lu畛ng nh畉p cin. 但y l lu畛ng nh畉p chu畉n 動畛c n畛i k畉t (connect) v畛i bn ph鱈m, cho ph辿p ch炭ng ta nh畉n d畛 li畛u t畛 bn ph鱈m. - Ch炭ng ta c滴ng 達 lm quen v畛i lu畛ng xu畉t cout. 但y l lu畛ng xu畉t chu畉n 動畛c n畛i k畉t v畛i mn h狸nh, cho ph辿p ta g畛i d畛 li畛u ra mn h狸nh Khi m畛t lu畛ng d達 動畛c n畛i k畉t v畛i m畛t thi畉t b畛 no 坦 (ho畉c t畉p tin) th狸 ta c坦 th畛 g畛i d畛 li畛u t畛i thi畉t b畛 ho畉c nh畉n d畛 li畛u t畛 thi畉t b畛 坦 th担ng qua lu畛ng. T畉p tin th動 vi畛n cho ph辿p ta lm vi畛c v畛i v畛i lu畛ng file (file stream) l fstream. V狸 v畉y, 畛 lm vi畛c 動畛c v畛i file trong C++, ch炭ng ta ph畉i include th動 vi畛n ny trong ch動董ng tr狸nh: #include <fstream> T畉o lu畛ng (Creating Stream) Tr動畛c khi ch炭ng ta c坦 th畛 d湛ng c叩c lu畛ng nh畉p/xu畉t file (file input/output stream), ch炭ng ta ph畉i t畉o ra ch炭ng. C炭 ph叩p: ifstream in_stream; //t畉o lu畛ng file nh畉p ofstream out_stream; //t畉o lu畛ng file xu畉t Lu畛ng nh畉p ifstream d湛ng 畛 畛c d畛 li畛u t畛 file ra ch動董ng tr狸nh c畛a ch炭ng ta Lu畛ng xu畉t ofstream d湛ng 畛 ghi d畛 li畛u t畛 ch動董ng tr狸nh ra file. N畛i k畉t v ng畉t n畛i k畉t gi畛a lu畛ng v畛i file /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 1
2.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ Sau khi 達 t畉o ra c叩c lu畛ng nh畉p/xu畉t, ch炭ng ta c坦 th畛 d湛ng ph動董ng th畛c "open(...)". 畛 n畛i k畉t lu畛ng v畛i file c畉n m畛 hay t畉o. V鱈 d畛: 畛 n畛i k畉t lu畛ng ifstream (lu畛ng file nh畉p) "in_stream" 達 m畛 trong v鱈 d畛 tr棚n t畛i file "test.txt", ta d湛ng c但u l畛nh nh動 sau: in_stream.open("test.txt"); Sau khi n畛i k畉t, lu畛ng ny s畉 畛 v畛 tr鱈 畉u file "test.txt". 畛 n畛i k畉t lu畛ng xu畉t ofstream "out_stream" 畉n file test.txt, ch炭ng ta d湛ng c但u l畛nh t動董ng t畛: out_stream.open("test.txt"); V畛i l畛nh n畛i k畉t lu畛ng xu畉t v畛i file nh動 th畉 ny, n畉u file 達 c坦 s畉n tr棚n 挑a th狸 n畛i dung c滴 c畛a file s畉 b畛 x坦a, s畉n sng cho vi畛c nh畉p m畛i. 畛 ng畉t n畛i k畉t m畛t lu畛ng ra kh畛i file, ta d湛ng ph動董ng th畛c close c畛a lu畛ng 坦. V鱈 d畛: 畛 ng畉t n畛i k畉t gi畛a lu畛ng nh畉p ifstream "in_stream" v file, ta d湛ng l畛nh sau: in_stream.close(); /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 2
3.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ Ki畛m tra k畉t qu畉 c畛a c叩c c但u l畛nh truy xu畉t file Nh畛ng thao t叩c tr棚n file nh動 m畛 file, 坦ng file, th動畛ng l ngu畛n g畛c g但y ra l畛i. Do 坦, ta ph畉i ki畛m tra l畛i c畛a nh畛ng c但u l畛nh ny m畛i khi th畛c hi畛n ch炭ng 畛 c坦 nh畛ng s畛a l畛i th鱈ch h畛p. 畛 ki畛m tra l畛i, ta d湛ng hm "fail()". V鱈 d畛: in_stream.fail(); Hm ny tr畉 v畛 gi叩 tr畛 true (kh叩c 0) n畉u l畛nh truy xu畉t file tr動畛c 坦 thnh c担ng, false (0) n畉u kh担ng thnh c担ng. V鱈 d畛: c但u l畛nh in_stream.fail() s畉 tr畉 v畛 gi叩 tr畛 0 n畉u m畛t thao t叩c tr棚n "in_stream" kh担ng thnh c担ng (c坦 th畛 l do ch炭ng ta m畛 file nh動ng file 坦 kh担ng t畛n t畉i). N畉u m畛t l畛i no 坦 x畉y ra, "in_stream" s畉 畛 trong tr畉ng th叩i l畛i v ch炭ng ta kh担ng th畛 d湛ng n坦 畛 thao t叩c tr棚n file. Ch炭ng ta ph畉i s畛a l畛i tr動畛c khi th畛c thi ti畉p c叩c thao t叩c ti畉p theo ho畉c tho叩t kh畛i ch動董ng tr狸nh, d湛ng l畛nh "exit(1)" trong th動 vi畛n hm "cstdlib". V鱈 d畛: #include <iostream.h> #include <fstream.h> #include <cstdlib.h> int main() { ifstream in_stream; in_stream.open("Lecture_4"); if (in_stream.fail()) { cout << "Sorry, the file couldn't be opened!n"; exit(1); } ... 畛c/ghi k箪 t畛 (Charater input and output): 畛c k箪 t畛 d湛ng "get(...)" Sau khi g畉n lu畛ng nh畉p istream vo m畛t file (m畛 file), ch炭ng ta c坦 th畛 畛c m畛t k箪 t畛 t畛 file d湛ng hm thnh vi棚n "get(...)". Hm ny nh畉n vo m畛t tham s畛 ki畛u "char". V鱈 d畛: 畛i v畛i lu畛ng in_stream 達 m畛 畛 tr棚n, ta c坦 th畛 畛c m畛t k箪 t畛 vo bi畉n ch b畉ng l畛nh sau (xem h狸nh minh h畛a): in_stream.get(ch); /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 3
4.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ L畛nh ny s畉 th畛c hi畛n 2 thao t叩c: bi畉n "ch" 動畛c g叩n cho k箪 t畛 "'4'", v lu畛ng nh畉p "in_stream" 動畛c d畛i v畛 tr鱈 t畛i k箪 t畛 k畉 ti畉p trong file, s畉n sng cho vi畛c 畛c k箪 t畛 k畉 ti畉p Ghi k箪 t畛 d湛ng "put(...)" Ch炭ng ta c滴ng c坦 th畛 ghi m畛t k箪 t畛 ra file 達 m畛 th担ng qua lu畛ng xu畉t ostream b畉ng hm "put(...)". Hm ny c滴ng nh畉n vo 1 tham s畛 ki畛u k箪 t畛, l k箪 t畛 m ta mu畛n ghi ra file. V鱈 d畛: out_stream.put('4'); C滴ng t動董ng t畛 nh動 hm get(...), sau khi th畛c hi畛n ghi ra file, lu畛ng s畉 t畛 d畛i 畉n k箪 k畉 ti畉p (th動畛ng l v畛 tr鱈 end-of-file). Ki畛m tra cu畛i file (end of file): 畛 ki畛m tra xem ch炭ng ta 達 truy xu畉t 畉n cu畛i file hay ch動a, ch炭ng ta d湛ng hm "eof()" c畛a lu畛ng nh畉p ifstreams. H狸nh sau s畉 minh h畛a vi畛c 畛c d畛 li畛u t畛 file /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 4
5.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ N畉u lu畛ng nh畉p istream 達 畉n v畛 tr鱈 cu畛i file m ta d湛ng hm get(...) 畛 畛c k箪 t畛 vo m畛t bi畉n th狸 bi畉n 坦 s畉 mang m畛t gi叩 tr畛 kh担ng h畛p l畛. in_stream.get(ch); K畉t qu畉 c畛a in_stream.eof() s畉 tr畉 v畛 gi叩 tr畛 true (kh叩c 0). V鱈 d畛: ch動董ng tr狸nh sau 但y s畉 m畛 file test.txt v in n畛i dung c畛a n坦 ra mn h狸nh, 畛ng th畛i t畉o file copy_of_test.txt v copy n畛i dung c畛a file test.txt sang. #include <iostream.h> #include <fstream.h> int main() { char character; ifstream in_stream; ofstream out_stream; in_stream.open("test.txt"); out_stream.open("Copy_of_test.txt"); in_stream.get(character); while (!in_stream.eof()) { cout << character; //in ky tu ra man hinh out_stream.put(character); in_stream.get(character); } out_stream.close(); in_stream.close(); return 0; } 畛c/ghi file d湛ng to叩n t畛 ">>" v << 畛 ph畉n tr棚n, ch炭ng ta 達 xem qua c叩ch 畛c m畛t k箪 t畛 t畛 file ho畉c vi畉t m畛t k箪 t畛 ra file. Lu畛ng xu畉t ofstreams v lu畛ng nh畉p ifstreams ch畛 lm vi畛c v畛i nh畛ng k箪 t畛, v狸 v畉y nh畛ng ki畛u d畛 li畛u kh叩c nh動 "int", "double",... s畉 動畛c chuy畛n qua c叩c k箪 t畛 tr動畛c khi ch炭ng 動畛c vi畉t vo file v s畉 動畛c chuy畛n ng動畛c l畉i khi ch炭ng 動畛c 畛c ra. /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 5
6.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ Tuy nhi棚n, c叩c to叩n t畛 ">>" v "<<" m ch炭ng ta 達 g畉p khi h畛c v畛 c叩ch xu畉t d畛 li畛u ra mn h狸nh ho畉c nh畉p d畛 li畛u t畛 bn ph鱈m, s畉 th畛c hi畛n s畛 chuy畛n 畛i ny m畛t c叩ch t畛 畛ng. V鱈 d畛, n畉u ch炭ng ta c坦 m畛t lu畛ng ang 畛 tr畉ng th叩i nh動 sau: khi ch炭ng ta th畛c thi c但u l畛nh out_stream << 437 << ' '; th狸 k畉t qu畉 l ch炭ng ta c坦 tr畉ng th叩i nh動 sau: * Ch炭 箪: c叩c s畛 integer ph畉i c叩ch nhau kho畉ng tr畉ng. khi bi畉n n c坦 ki畛u l "int", th畛c thi c但u l畛nh in_stream >> n; ta c坦 k畉t qu畉 nh動 sau: /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 6
7.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ Ch炭 箪 l to叩n t畛 ">>" s畉 b畛 qua c叩c k箪 t畛 tr畉ng "' '", ngay c畉 khi ch炭ng ta 畛c vo nh畛ng k箪 t畛. V鱈 d畛: ch動董ng tr狸nh sau 但y s畉 t畉o 1 file c1o t棚n l Integers v ghi vo file c叩c s畛 nguy棚n 51, 52, 53, 54 and 55, sau 坦 s畉 畛c file ny b畉ng c叩c ki畛u d畛 li畛u kh叩c nhau. #include <iostream.h> #include <fstream.h> int main() { char character; int number = 51; int count = 0; ofstream out_stream; ifstream in_stream1; /* Stream for counting integers*/ ifstream in_stream2; /* Stream for counting chars */ /* Create the file */ out_stream.open("Integers"); for (count = 1 ; count <= 5 ; count++) out_stream << number++ << ' '; out_stream.close(); /* Count the integers in the file */ in_stream1.open("Integers"); count = 0; in_stream1 >> number; while (!in_stream1.eof()) { count++; in_stream1 >> number; } in_stream1.close(); cout << "Therere " << count << " integers in the file"; /* Count the non-blank characters */ in_stream2.open("Integers"); count = 0; in_stream2 >> character; while (!in_stream2.eof()) { count++; in_stream2 >> character; } in_stream2.close(); cout << "represented using " << count << " chars.n"; return 0; } 畛c chu畛i t畛 file: Ch炭ng ta c坦 th畛 oc m畛t chu畛i (k畉t th炭c b畉ng k箪 t畛 k畉t th炭c chu畛i n) t畛 file b畉ng hm thnh vi棚n getline(...) c畛a lu畛ng nh畉p istream. C炭 ph叩p c畛a hm ny t動董ng t畛 nh動 tr動畛ng h畛p nh畉p t畛 bn ph鱈m. /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 7
8.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ V鱈 d畛: ch動董ng tr狸nh docchuoi.cpp sau s畉 in n畛i dung c畛a ch鱈nh n坦 ra mn h狸nh, k竪m theo s畛 th畛 t畛 d嘆ng tr動畛c m畛i d嘆ng. #include <iostream.h> #include <fstream.h> int main() { char string[200]; int count = 0; ifstream in_stream; /*stream for getting line */ /* Get the content of the file */ in_stream1.open("docchuoi"); count = 0; in_stream.getline(string, 200); while (!in_stream.eof()) { count++; cout < count << : << string < endl; in_stream1.getline(string, 200); } in_stream.close(); cout << "Therere " << count << " lines in the file"; return 0; } 畛c/ghi 畛i t動畛ng (objects): Xu畉t 畛i t動畛ng: Mu畛n xu畉t 畛i t動畛ng vo file, ta ph畉i m畛 file 畛 ch畉 畛 binary: ofstream out_stream; out_stream.open(<filename>, ios:binary); Khi vi畉t 畛i t動畛ng vo file, ta ph畉i 辿p ki畛u 畛i t動畛ng v畛 ki畛u char*: Hocsinh hs(....); out_stream << (char*)&hs; 畛c 畛i t動畛ng: T動董ng t畛 xu畉t 畛i t動畛ng, khi 畛c 畛i t動畛ng t畛 file vo m畛t bi畉n, ta ph畉i 辿p ki畛u 畛i t動畛ng v畛 ki畛u char*: ifstream in_stream; in_stream.open(<filename>, ios:binary); Hocsinh hs(....); in_stream >> (char*)&hs; /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 8
9.
L畉p tr狸nh h動畛ng
畛i t動畛ng v畛i C++ V鱈 d畛: ch動董ng tr狸nh sau minh h畛a c叩ch s畛 d畛ng 畛i t動畛ng v畛i file #include <iostream.h> #include <fstream.h> #include <string.h> class Hocsinh { char hoten[80]; char lop[10]; float dtb; public: Hocsinh(); Hocsinh(char* ht, char* l, float d); void hien(); }; Hocsinh::Hocsinh() { strcpy(hoten, ); strcpy(lop, ); dtb = 0.0 } Hocsinh::Hocsinh(char* ht, char* l, float d) { strcpy(hoten, ht); strcpy(lop, l); dtb = d; } void hien() { cout << Ho ten: << hoten; cout << - Lop: << lop; cout << endl << Trung binh: << dtb; } int main() { Hocsinh hs1(Phan Thuong Cang, DI935601, 8.5); Hocsinh hs2; ofstream out_stream; /*stream 畛 xu畉t 畛i t動畛ng*/ ifstream in_stream; /*stream 畛 畛c 畛i t動畛ng*/ /* Get the content of the file */ out_stream1.open("hocsinh.txt", ios:binary); out_stream << (char*) &hs1; out_stream.close(); in_stream.open(hocsinh.txt, ios::binary); in_stream >> (char*) &hs2; in_stream.close(); return 0; } /home/vanlong/Backup_Windows/ContentDiskD/BaiGiang/C++/An/C++/TL Tham khao/FILE trong C++.doc 9
Download