C++ 文件讀寫

      網友投稿 1024 2025-03-31

      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 #include using namespace std; int main() { int a[10]; ofstream outfile("b.txt"); // 打開文件 outfile << "Little White"; // 輸出 outfile.close(); // 關閉磁盤文件 return 0; }

      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 #include using namespace std; int main() { int a[10]; // 打開文件 ofstream outfile("a.txt", ios::out); if(!outfile){ cerr << "open error!" << endl; exit(1); // 退出 } // 操作文件 cout << "enter 10 integer numbers:" << endl; for (int i = 0; i < 10; ++i) { // 輸入10次 cin >> a[i]; outfile << a[i] << " "; } // 關閉文件 cout << "The numbers have been writen to file." << endl; outfile.close(); return 0; }

      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 #include using namespace std; int main() { int a[10], max, index; // 打開文件 ifstream infile("a.txt", ios::in); if(!infile){ cerr << "open error!" << endl; exit(1); // 退出 } // 操作文件 for (int i = 0; i < 10; ++i) { // 輸入10次 infile >> a[i]; cout << a[i] << " "; } cout << endl; // 關閉文件 cout << "The numbers have been read." << endl; // 取最大 max = a[0]; // 初始化為第一個 index = 0; for (int i = 0; i < 10; ++i) { if(a[i] > max){ max = a[i]; index = i; } } cout << "max= " << max << endl; cout << "index= " << index << endl; return 0; }

      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 #include void get(); void set(); using namespace std; int main() { set(); get(); return 0; } void set() { ofstream outfile("temp1.txt"); if(!outfile) { cerr << "open temp1 error" << endl; exit(1); } char c[80]; cin.getline(c,80); for(int i=0; c[i]!=0; i++) if(c[i]>='a' && c[i]<='z') outfile.put(c[i]); outfile.close(); } void get() { char ch; ifstream infile("temp1.txt", ios::in); if(!infile) { cerr << "open temp1 error" << endl; exit(1); } ofstream outfile("temp2.txt"); if(!outfile) { cerr << "open temp2 error" << endl; exit(1); } while(infile.get(ch)){ outfile.put(ch - 32); } outfile.close(); infile.close(); }

      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

      C++ 文件讀寫

      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小時內刪除侵權內容。

      上一篇:怎樣找回wps中我的云文檔
      下一篇:工程項目進度表超詳細(工程項目進度表怎么做)
      相關文章
      中文字幕亚洲综合久久| 亚洲欧洲日产国码二区首页| 亚洲一区二区三区电影| 亚洲色图综合在线| 亚洲日本乱码卡2卡3卡新区| 亚洲一区二区三区精品视频| 亚洲国产日韩在线成人蜜芽| 亚洲白色白色在线播放| 亚洲伦另类中文字幕| 久久久久亚洲精品无码蜜桃| 97se亚洲综合在线| 91亚洲国产在人线播放午夜| 午夜影视日本亚洲欧洲精品一区 | 久久精品国产亚洲一区二区| 亚洲精品国产精品乱码视色| 国产亚洲情侣一区二区无码AV| 一本色道久久综合亚洲精品高清| 一本色道久久综合亚洲精品| 亚洲日韩中文字幕在线播放| 亚洲精品二区国产综合野狼| 亚洲成AV人片在| 久久久久久亚洲Av无码精品专口 | 亚洲国产黄在线观看| 亚洲精品线路一在线观看| 国产综合精品久久亚洲| 亚洲国产一二三精品无码| 亚洲av无码成人黄网站在线观看| 亚洲天堂久久精品| 亚洲美女色在线欧洲美女| 亚洲国产美女在线观看| 亚洲第一男人天堂| 精品国产_亚洲人成在线| 亚洲高清视频一视频二视频三| 亚洲综合国产精品第一页| 亚洲精品午夜无码电影网| 亚洲韩国—中文字幕| 亚洲乱码卡一卡二卡三| 亚洲精品无码mⅴ在线观看| 亚洲自偷自偷在线成人网站传媒| 香蕉视频亚洲一级| 亚洲色精品aⅴ一区区三区|