PDA

View Full Version : All about File I/O in C++



cuonguyen
26-09-2002, 13:17
Tôi post bài này lên không dám qua mặt các “cao thủ”, mà chỉ để nói rằng trong diễn đ àn rất cần các bài post này đ ể mọi ngư ời cùng học, và t ôi hi vọng là các cao thủ sẽ post các bài của mình lên để cho tôi học hỏi.

Bài này sẽ g ới thiệu về File I/O.

1. Write To File.
Chúng ta cùng xem chư ơng trình đầu tiên nhé:

#include <fstream.h>
void main()
{
ofstream WriteToFile(“f irs.txt”);
WriteToFile << “Hello World!”;
WriteToFile.close();
}

Chương trình này tạo một file “first.txt” (ở nơi cùng thư mục với file chương trình của bạn), rồi ghi dòng “Hello World!” vào file.

Hãy đi từng dòng nhé:

#include <fstream.h> - Thư viện để sử dụng các hàm File I/O.

ofstream WriteToFile(“first.txt”):
ofstream là một lớp. Dòng n ày tạo một đối tượng thể hiện lớp ofstream là WriteToFile (hoặc một tên bất kỳ), dùng hàm c ontructor với tham số “f irst.txt”. Hàm này sẽ tạo ra một file với tên là “f irst.txt”.

WriteToFile << “Hello World!”: ghi chuỗi “Hello World!” vào file.

WriteToFile.close(): đ óng file lại. Mỗi khi bạn mở một file, sau đó bạn phải đóng nó lại.

2. Đọc từ File.

Chương trình.

#include <fstream.h>
void main(){
ifstream OpenFile("first.txt");
char ch;
while(!OpenFile.eof())
{
OpenFile.get(ch);
cout << ch;
}
OpenFile.close();
}

Chương trình này dùng cách đọc từng ký tự (còn có cách khác là đọc từng từ (word) và đọc từng dòng (line) - sẽ tham khảo sau).

ifstream OpenFile(“first.txt”) – Tạo một đối t ượng thể hiện lớp ifstream tên là OpenFile (có thể dùng tên khác tuỳ ý). Hàm contructor với tham số “first.txt”, đây là file mà chúng ta đã tạo ở mục trên. Hàm này sẽ mở file “first.txt” để đọc.

char ch: dòng này tôi “bet” rằng các bạn đã quá quen thuộc.

while(!OpenFile.eof()) - hàm eof() của lớp ifstream. Hàm eof() trả về giá trị 0 khi chưa kết thúc file, ngược lại là 1.

OpenFile.get(ch); - get(char &ch) là một hàm của lớp ifstream, hàm này sẽ đọc từng ký tự của file và gán cho biến ch. Sau đó sẽ chỉ đến ký tự tiếp theo (do inside-pointer)

Vòng lặp while... sẽ lặp cho tới khi kết thúc file, mỗi lần lặp sẽ đọc một ký tự và gán cho biến ch. Sau đó đưa ra màn h ình ký t ự đó:

cout<<ch;

Vòng lặp tiếp theo sẽ đọc ký tự tiếp theo sau ký tự trước (do inside-pointer: điều này sẽ được giải thích ở phần sau). Do đó khi chạy chương trình, sẽ xuất hiện trên màn hình dòng ch ữ:

“Hello World!”

(Còn ti ếp)
Mong các bạn đóng góp, để tôi xem có nên tiếp tục không.

quangvu
26-09-2002, 13:51
Bài hay lắm ,bạn cứ tiếp tục đi.Mình ủng hộ đó.

sevlowhtiwsecnad
26-09-2002, 14:45
good job ! this is for u... @>----.

không cần phải rào trước đón sau kỹ quá thế, bạn post bài đóng góp là quý lắm rồi :).

bpmtri
26-09-2002, 15:58
Bác DWW này, sao lại đổi nick vậy hử, tính đi bằng 2 tay ha? :D

sevlowhtiwsecnad hay dancewithwolves????:evil: :evil: :evil: :evil:

danceswithwolves
27-09-2002, 05:41
bác bpmtri@ mắt tinh thật... :). Thế mà tớ cứ tưởng bác cận nặng lắm chứ...