C++ 文件讀寫
C++ 文件讀寫
概述
文件分類
文件流
流對象
打開文件
open 函數(shù)
構造函數(shù)
打開文件的方式
關閉文件
ASCII 文件操作
寫入文件
讀取文件
讀寫文件
概述
所謂 “文件”, 一般指存儲在外部介質上的數(shù)據(jù)的集合.
一批數(shù)據(jù)是以文件的形式存放在外部介質上的. 操作系統(tǒng)是以文件的單位對數(shù)據(jù)進行管理.
文件分類
按存儲介質:
磁盤文件
光盤文件
U 盤文件
按用途:
程序文件 (program file)
數(shù)據(jù)文件 (data file)
按文件中數(shù)據(jù)的組織形式
ASCII 文件: 以 ASCII 表示的文件 (如 .txt, .cpp)
二進制文件: 用二進制形式表示的文件 (如 .o, .exe)
文件流
文件流
輸出文件流是從內存流向外存文件的數(shù)據(jù)
輸入文件流是從外存文件流向內存的數(shù)據(jù)
每一個文件流都有一個內存緩沖區(qū)與之對應
文件流 vs. 文件的:
文件流本身不是文件, 是以文件為輸入輸出對象的流
要對磁盤文件輸入輸出, 必須通過文件流來實現(xiàn)
文件操作需要流對象, cout, cin 是已定義的流對象
流對象
在 C++ I/O 類庫中專門用于文件操作的類:
要對文件輸入輸出, 必須定義一個文件流類的對象. C++ 是通過流對象進行輸入輸出的:
在用標準設備為對象的輸入輸出中, cin, cout 是流對象
文件操作也是要定義對象, 例如: ofstream outfile
打開文件
打開文件是指在文件讀寫之前必要的準備工作. 打開分揀為流對象和指定磁盤文件建立關聯(lián), 以便使文件流流向指定的磁盤文件, 指定文件的工作方式.
打開文件有兩種不同方法, 調用 open 函數(shù)和調用文件流構造函數(shù).
open 函數(shù)
調用文件流的成員函數(shù) open, 如:
ofstream outfile; // 定義輸出文件流類對象 outfile.open(″f1.dat″,ios::out);
1
2
構造函數(shù)
在定義文件流對象是調用文件流類的構造函數(shù):
istream infile(″c:\new\f1.dat″, ios::in);
1
打開文件的方式
如果打開操作失敗, open 函數(shù)的返回值為 0. 如果是調用構造函數(shù)的方式打開文件的, 則流對象的值為 0.
關閉文件
在對已打開的磁盤文件的續(xù)寫操作完成后, 應該關閉該文件. 例如:
#include
1
2
3
4
5
6
7
8
9
10
11
12
輸出結果:
ASCII 文件操作
ASCII 文件, 即字符文件. 文件中的每一個字節(jié)均以 ASCII 代碼的形式存放, 即一個字節(jié)存放一個字符.
程序可以從 ASCII 文件中讀取若干個字符, 也可以向它輸出一些字符.
對 ASCII 文件的讀寫操作的方法:
用流插入運算符<<和流提取運算符>>輸入輸出標準類型的數(shù)據(jù)
用文件流的 put, get, getline 等成員函數(shù)進行字符串的輸入輸出
寫入文件
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
讀取文件
從文件讀取整數(shù), 并輸出數(shù)中最大的數(shù)已經序列號.
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
輸出結果:
1 3 5 4 6 8 4 2 1 2 The numbers have been read. max= 8 index= 5
1
2
3
4
讀寫文件
從鍵盤讀入一行字符, 把其中的小寫字母字符依次存放在文件中. 再從文件中讀出, 將其中的小寫字母改為大寫字母, 重新讀入.
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
輸出結果:
C++ iOS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。