精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用C++實現簡單的文件I/O操作

開發 后端
本文介紹的是C++實現簡單的文件的I/O操作,希望對你有幫助,一起來看。

文件 I/O C++中比烤蛋糕簡單多了。 在這篇文章里,我會詳細解釋ASCII和二進制文件的輸入輸出的每個細節,值得注意的是,所有這些都是用C++完成的。

一、ASCII 輸出

為了使用下面的方法, 你必須包含頭文件<fstream.h>(譯者注:在標準C++中,已經使用<fstream>取代<fstream.h>,所有的C++標準頭文件都是無后綴的。)。這是 <iostream.h>的一個擴展集, 提供有緩沖的文件輸入輸出操作. 事實上, <iostream.h> 已經被<fstream.h>包含了, 所以你不必包含所有這兩個文件, 如果你想顯式包含他們,那隨便你。我們從文件操作類的設計開始, 我會講解如何進行ASCII I/O操作。 如果你猜是"fstream," 恭喜你答對了! 但這篇文章介紹的方法,我們分別使用"ifstream"?和 "ofstream" 來作輸入輸出。

如果你用過標準控制臺流"cin"?和 "cout," 那現在的事情對你來說很簡單。 我們現在開始講輸出部分,首先聲明一個類對象。

  1. ofstream fout; 

 

這就可以了,不過你要打開一個文件的話, 必須像這樣調用ofstream::open()。

 

  1. fout.open("output.txt"); 

 

你也可以把文件名作為構造參數來打開一個文件.

 

  1. ofstream fout("output.txt"); 

 

這是我們使用的方法, 因為這樣創建和打開一個文件看起來更簡單. 順便說一句, 如果你要打開的文件不存在,它會為你創建一個, 所以不用擔心文件創建的問題. 現在就輸出到文件,看起來和"cout"的操作很像。 對不了解控制臺輸出"cout"的人, 這里有個例子。

 

  1. int num = 150;  
  2. char name[] = "John Doe";  
  3. fout << "Here is a number: " << num << "\n";  
  4. fout << "Now here is a string: " << name << "\n"

 

現在保存文件,你必須關閉文件,或者回寫文件緩沖. 文件關閉之后就不能再操作了, 所以只有在你不再操作這個文件的時候才調用它,它會自動保存文件。 回寫緩沖區會在保持文件打開的情況下保存文件, 所以只要有必要就使用它。 回寫看起來像另一次輸出, 然后調用方法關閉。像這樣:

 

  1. fout << flush; fout.close(); 

 

現在你用文本編輯器打開文件,內容看起來是這樣:

Here is a number: 150 Now here is a string: John Doe

很簡單吧! 現在繼續文件輸入, 需要一點技巧, 所以先確認你已經明白了流操作,對 "<<" 和">>" 比較熟悉了, 因為你接下來還要用到他們。繼續…

二、ASCII 輸入

輸入和"cin" 流很像. 和剛剛討論的輸出流很像, 但你要考慮幾件事情。在我們開始復雜的內容之前, 先看一個文本:

12 GameDev 15.45 L This is really awesome!

為了打開這個文件,你必須創建一個in-stream對象,?像這樣。

 

  1. ifstream fin("input.txt"); 

 

現在讀入前四行. 你還記得怎么用"<<" 操作符往流里插入變量和符號吧?好,?在 "<<" (插入)?操作符之后,是">>" (提取) 操作符. 使用方法是一樣的. 看這個代碼片段.

 

  1. int number;   
  2. float real;   
  3. char letter, word[8];   
  4. fin >> number; fin >> word; fin >> real; fin >> letter; 

 

也可以把這四行讀取文件的代碼寫為更簡單的一行。

 

  1. fin >> number >> word >> real >> letter; 

 

它是如何運作的呢? 文件的每個空白之后, ">>" 操作符會停止讀取內容, 直到遇到另一個>>操作符. 因為我們讀取的每一行都被換行符分割開(是空白字符), ">>" 操作符只把這一行的內容讀入變量。這就是這個代碼也能正常工作的原因。但是,可別忘了文件的最后一行。

This is really awesome!

如果你想把整行讀入一個char數組, 我們沒辦法用">>"?操作符,因為每個單詞之間的空格(空白字符)會中止文件的讀取。為了驗證:

 

  1. char sentence[101]; fin >> sentence; 

 

我們想包含整個句子, "This is really awesome!" 但是因為空白, 現在它只包含了"This". 很明顯, 肯定有讀取整行的方法, 它就是getline()。這就是我們要做的。

 

  1. fin.getline(sentence, 100); 

 

這是函數參數. 第一個參數顯然是用來接受的char數組. 第二個參數是在遇到換行符之前,數組允許接受的最大元素數量. 現在我們得到了想要的結果:“This is really awesome!”。

你應該已經知道如何讀取和寫入ASCII文件了。但我們還不能罷休,因為二進制文件還在等著我們。

三、二進制 輸入輸出

二進制文件會復雜一點, 但還是很簡單的。 首先你要注意我們不再使用插入和提取操作符(譯者注:<< 和 >> 操作符). 你可以這么做,但它不會用二進制方式讀寫。你必須使用read() 和write() 方法讀取和寫入二進制文件. 創建一個二進制文件, 看下一行。

 

  1. ofstream fout("file.dat", ios::binary); 

 

這會以二進制方式打開文件, 而不是默認的ASCII模式。首先從寫入文件開始。函數write() 有兩個參數。 第一個是指向對象的char類型的指針, 第二個是對象的大小(譯者注:字節數)。 為了說明,看例子。

 

  1. int number = 30;   
  2. fout.write((char *)(&number), sizeof(number)); 

 

第一個參數寫做"(char *)(&number)". 這是把一個整型變量轉為char *指針。如果你不理解,可以立刻翻閱C++的書籍,如果有必要的話。第二個參數寫作"sizeof(number)". sizeof() 返回對象大小的字節數. 就是這樣!

二進制文件最好的地方是可以在一行把一個結構寫入文件。 如果說,你的結構有12個不同的成員。 用ASCII?文件,你不得不每次一條的寫入所有成員。 但二進制文件替你做好了。 看這個。

 

  1. struct OBJECT { int number; char letter; } obj;   
  2. obj.number = 15;  
  3. obj.letter = ‘M’;   
  4. fout.write((char *)(&obj), sizeof(obj)); 

 

這樣就寫入了整個結構! 接下來是輸入. 輸入也很簡單,因為read()?函數的參數和 write()是完全一樣的, 使用方法也相同。

 

  1. ifstream fin("file.dat", ios::binary);   
  2. fin.read((char *)(&obj), sizeof(obj)); 

 

我不多解釋用法, 因為它和write()是完全相同的。二進制文件比ASCII文件簡單, 但有個缺點是無法用文本編輯器編輯。 接著, 我解釋一下ifstream 和ofstream 對象的其他一些方法作為結束.

四、更多方法

我已經解釋了ASCII文件和二進制文件, 這里是一些沒有提及的底層方法。

檢查文件

你已經學會了open() 和close() 方法, 不過這里還有其它你可能用到的方法。

方法good() 返回一個布爾值,表示文件打開是否正確。

類似的,bad() 返回一個布爾值表示文件打開是否錯誤。 如果出錯,就不要繼續進一步的操作了。

最后一個檢查的方法是fail(), 和bad()有點相似, 但沒那么嚴重。

讀文件

方法get() 每次返回一個字符。

方法ignore(int,char) 跳過一定數量的某個字符, 但你必須傳給它兩個參數。第一個是需要跳過的字符數。 第二個是一個字符, 當遇到的時候就會停止。 例子,

 

  1. fin.ignore(100, ‘\n’); 

 

會跳過100個字符,或者不足100的時候,跳過所有之前的字符,包括 ‘\n’。

方法peek() 返回文件中的下一個字符, 但并不實際讀取它。所以如果你用peek() 查看下一個字符, 用get() 在peek()之后讀取,會得到同一個字符, 然后移動文件計數器。

方法putback(char) 輸入字符, 一次一個, 到流中。我沒有見到過它的使用,但這個函數確實存在。

寫文件

只有一個你可能會關注的方法.?那就是 put(char), 它每次向輸出流中寫入一個字符。

打開文件

當我們用這樣的語法打開二進制文件:

 

  1. ofstream fout("file.dat", ios::binary); 

 

"ios::binary"是你提供的打開選項的額外標志. 默認的, 文件以ASCII方式打開, 不存在則創建, 存在就覆蓋. 這里有些額外的標志用來改變選項。

  • ios::app 添加到文件尾
  • ios::ate 把文件標志放在末尾而非起始。
  • ios::trunc 默認. 截斷并覆寫文件。
  • ios::nocreate 文件不存在也不創建。
  • ios::noreplace 文件存在則失敗。

文件狀態

我用過的唯一一個狀態函數是eof(), 它返回是否標志已經到了文件末尾。 我主要用在循環中。 例如, 這個代碼斷統計小寫‘e’ 在文件中出現的次數。

 

  1. ifstream fin("file.txt");   
  2. char ch; int counter;   
  3. while (!fin.eof()) {  
  4. ch = fin.get();   
  5. if (ch == ‘e’) counter++;   
  6. }  
  7. fin.close(); 

 

我從未用過這里沒有提到的其他方法。 還有很多方法,但是他們很少被使用。參考C++書籍或者文件流的幫助文檔來了解其他的方法。

結論

你應該已經掌握了如何使用ASCII文件和二進制文件。有很多方法可以幫你實現輸入輸出,盡管很少有人使用他們。 我知道很多人不熟悉文件I/O操作,我希望這篇文章對你有所幫助。 每個人都應該知道. 文件I/O還有很多顯而易見的方法,?例如包含文件 <stdio.h>. 我更喜歡用流是因為他們更簡單。 祝所有讀了這篇文章的人好運, 也許以后我還會為你們寫些東西。

責任編輯:于鐵 來源: 互聯網
相關推薦

2023-09-19 23:26:15

++i原子操作C++

2011-06-17 16:09:04

freadfwrite

2023-10-30 10:29:50

C++最小二乘法

2010-02-03 09:59:42

C++文件流操作

2015-08-10 14:39:46

Java 操作建議

2024-05-06 11:19:20

內存池計算機編程

2010-02-05 16:18:41

C++流式文件操作

2016-10-20 16:07:11

C++Modern C++異步

2011-03-04 10:04:31

Linux文件操作命令

2010-02-01 10:32:01

C++文件操作

2024-01-15 06:01:36

C++數組

2018-11-05 11:20:54

緩沖IO

2009-08-19 09:57:01

C++ RAII

2009-08-28 15:49:45

C#對INI文件操作

2016-10-12 13:53:38

JavaByteBufferRandomAcces

2009-08-19 10:09:21

C#和C++

2011-01-14 09:25:28

LinuxIO機制

2010-02-06 15:15:31

C++ Builder

2020-06-16 16:25:05

C++JavaPython

2010-01-22 16:21:50

C++ Builder
點贊
收藏

51CTO技術棧公眾號

在线观看区一区二| 337p粉嫩大胆噜噜噜噜噜91av| 日韩在线视频免费观看| 日韩欧美色视频| 免费看电影在线| 91蜜桃网址入口| 国产精品丝袜视频| 精品在线免费观看视频| 日韩精选在线| 欧美久久久久中文字幕| 日韩av在线第一页| 麻豆传媒视频在线| 91视频国产资源| 91美女高潮出水| 黄网在线观看视频| av一区二区在线观看| 精品日韩在线一区| 日本 片 成人 在线| av中文字幕在线看| 国产精品久久久久久久岛一牛影视| 不卡一区二区三区视频| 精人妻无码一区二区三区| 欧美精品一卡| 国产视频亚洲精品| 女同性αv亚洲女同志| 唐人社导航福利精品| 一区二区三区成人| 亚洲电影一二三区| 三级视频在线播放| 国内精品免费在线观看| 国产精品福利久久久| 国产91av视频| 亚洲国产一区二区三区在线播放| 亚洲全黄一级网站| 亚洲一区二区在线免费| 精品国产亚洲一区二区三区大结局 | 亚洲韩日在线| 久久最新资源网| 90岁老太婆乱淫| 久久亚洲道色| 日韩欧美一区二区免费| 亚洲这里只有精品| 影视一区二区三区| 欧美性xxxx极品高清hd直播| 丰满的少妇愉情hd高清果冻传媒| av网站网址在线观看| 中文一区二区在线观看| 色综合影院在线观看| 你懂的免费在线观看视频网站| 成人国产精品免费观看动漫| 91精品国自产在线观看| 99精品在线视频观看| 久久99精品国产.久久久久久| 国产精品免费小视频| 高潮毛片又色又爽免费 | 国产精品视频无码| 久久精品国产亚洲一区二区三区| 国产成人一区二区三区| 欧美日韩一级黄色片| 性娇小13――14欧美| 欧美主播福利视频| 免费av网站在线| 首页国产欧美久久| 国产精品狼人色视频一区| 中文字幕av第一页| 狠狠色狠狠色综合系列| 91久久久亚洲精品| 亚洲第一天堂网| 岛国一区二区三区| 久久久久久久久久久一区| 色资源在线观看| 久久久久久麻豆| 亚洲国产精品一区二区第四页av| 在线观看a视频| 国产精品无码永久免费888| 中国成人在线视频| 主播国产精品| 精品久久久久久中文字幕一区奶水| 成人中文字幕在线播放| 你懂得影院夜精品a| 欧美吻胸吃奶大尺度电影 | 最近的2019中文字幕免费一页| 91香蕉国产视频| 91精品亚洲| 国产69精品久久久久9999| 国产精品黄色大片| 奇米777欧美一区二区| 亚洲综合一区二区不卡| 性xxxx视频播放免费| 中文字幕免费不卡在线| 日韩精品福利片午夜免费观看| 成人福利电影| 欧美在线观看一二区| 肉色超薄丝袜脚交| 亚洲另类av| 久久韩国免费视频| 五月婷婷中文字幕| 国产美女主播视频一区| 久久久婷婷一区二区三区不卡| 成人免费在线观看| 亚洲综合激情网| 亚洲精品一二三四五区| 香蕉免费一区二区三区在线观看| 亚洲欧美日韩国产中文| 性欧美videos| 美女黄网久久| 97se亚洲综合在线| 国产精品四虎| 亚洲成a人v欧美综合天堂下载| 波多野结衣天堂| 高清日韩欧美| 日韩在线www| 韩国av中文字幕| 国产精品一区二区不卡| 色一情一乱一伦一区二区三欧美 | 怡红院av一区二区三区| 日本一极黄色片| 亚洲精品一区二区三区中文字幕| 亚洲欧美日韩中文在线制服| 久一视频在线观看| 国精产品一区一区三区mba桃花| 久久久久久一区| 羞羞的网站在线观看| 欧美综合亚洲图片综合区| 在线播放第一页| 亚洲国产精品91| 国产精品青青在线观看爽香蕉| 少妇喷水在线观看| 亚洲曰韩产成在线| 97超碰人人看| 91青青国产在线观看精品| 日产精品99久久久久久| 日本黄色免费视频| 亚洲永久精品国产| 久久久久久无码精品人妻一区二区| 精品国产一区二区三区香蕉沈先生| 国模精品视频一区二区| 性生交生活影碟片| 亚洲精品视频在线观看网站| xxx国产在线观看| 精品久久久久久久久久久下田| 欧美在线播放视频| 亚洲欧美日本在线观看| 午夜精品福利一区二区蜜股av| 男人操女人下面视频| 香蕉av一区二区| 国产欧美久久一区二区| 三级外国片在线观看视频| 欧美日韩一区二区三区| 国产精品jizz| 亚洲永久网站| 欧美另类一区| 二区三区不卡| 国产亚洲免费的视频看| 婷婷激情五月综合| 国产欧美日韩在线| 久久这里只精品| 天天色天天射综合网| 成人a在线观看| jizz性欧美| 日韩一级免费观看| 国产网站在线看| 99在线热播精品免费| 2022亚洲天堂| 国产精品一区二区av日韩在线| 日本高清久久天堂| av在线电影观看| 欧美乱妇20p| 久艹视频在线观看| 99久久精品久久久久久清纯| 国产免费成人在线| 青青一区二区三区| 亚洲一区二区三区在线免费观看| 在线āv视频| 亚洲精品第一页| 波多野结衣在线观看视频| 国产精品欧美精品| 日本xxxx免费| 西西人体一区二区| 亚洲精品国产系列| 日韩一级淫片| 欧美怡红院视频一区二区三区| melody高清在线观看| 69堂成人精品免费视频| 国产第一页在线播放| 国产亚洲精品bt天堂精选| 中文字幕在线观看日| 在线不卡视频| 色之综合天天综合色天天棕色| 久久三级毛片| 国内精品久久影院| av亚洲在线| 精品乱码亚洲一区二区不卡| 秋霞av一区二区三区| 亚洲免费在线观看视频| 熟妇高潮精品一区二区三区| 老鸭窝一区二区久久精品| 国产freexxxx性播放麻豆| 国产va免费精品观看精品视频| 96精品久久久久中文字幕| 欧美三级网站| 久久天堂av综合合色| 青青草在线播放| 日韩一区二区三区av| 免费视频网站在线观看入口| 亚洲综合一区二区三区| 国产视频三区四区| 99久久伊人精品| 涩多多在线观看| 久久精品一区二区国产| www.好吊操| 99久久激情| 日韩精品欧美一区二区三区| 精品国产导航| 亚洲一区二区久久久久久| av综合电影网站| 久久久久久久久久婷婷| 天堂中文8资源在线8| 亚洲美女av网站| 亚洲高清视频在线播放| 欧美日本国产视频| 国产在线观看第一页| 粉嫩av一区二区三区免费野| 久久久久久久蜜桃| 国产精品成人免费精品自在线观看 | 2020国产成人综合网| 欧美熟妇精品一区二区| 麻豆精品视频在线| 成人免费无码av| 一本久道久久综合婷婷鲸鱼| 欧美图片激情小说| 欧美日韩国产免费观看 | 永久免费成人代码| 不卡的av网站| 久久精品aⅴ无码中文字字幕重口| 蜜臀久久99精品久久久久宅男| av免费在线播放网站| 国产精品久久久久毛片大屁完整版| 国产成人一区二区三区别| 亚洲精品成人| 成人性做爰片免费视频| 欧美3p视频| 自拍亚洲欧美老师丝袜| 91麻豆精品国产91久久久平台| 小说区图片区图片区另类灬| 狠狠做深爱婷婷综合一区| 欧美深深色噜噜狠狠yyy| 亚洲欧洲av| 久久精品日产第一区二区三区乱码| 国产精东传媒成人av电影| 国产66精品久久久久999小说| 午夜久久av| 999国内精品视频在线| 亚洲天堂中文字幕在线观看 | 久操国产精品| 欧美一区二区三区电影在线观看| 最新国产精品视频| 日本一区视频在线观看| 青青一区二区三区| 四虎免费在线观看视频| 在线观看免费一区二区| 无码人妻精品一区二区蜜桃网站| 国产精品s色| 国产精品成人久久电影| 香蕉久久夜色精品| 午夜激情福利在线| 国产曰批免费观看久久久| 黄色一级片免费播放| 高潮精品一区videoshd| www国产视频| 国产日韩欧美不卡| 国产高潮流白浆| 亚洲一区二区高清| 九九热在线免费观看| 欧美日韩久久久久久| 国产aⅴ爽av久久久久成人| 精品国产sm最大网站| 飘雪影院手机免费高清版在线观看 | 国产精品一区二区在线免费观看| 不卡高清视频专区| 夫妇交换中文字幕| 一区二区欧美精品| 69成人免费视频| 欧美老女人在线| 三级在线观看网站| 中文字幕在线观看亚洲| 男男gaygays亚洲| 欧美专区国产专区| 伊人亚洲精品| 国新精品乱码一区二区三区18| 欧美男男gaytwinkfreevideos| 久久久国产精华液999999| 精品91视频| 午夜免费福利视频在线观看| 成人网在线免费视频| 亚洲AV无码成人精品区明星换面| 亚洲欧美一区二区三区孕妇| 欧美videossex极品| 在线电影院国产精品| 色播色播色播色播色播在线 | 九九九久久久久| 一本到不卡精品视频在线观看| 国产男男gay体育生白袜| 亚洲精选在线观看| 欧美男男video| 国产精品福利在线观看网址| 综合激情久久| 一区二区三区四区欧美| 亚洲欧洲另类| 婷婷激情综合五月天| 久久久精品人体av艺术| 国语对白一区二区| 欧美一级一级性生活免费录像| 国内av一区二区三区| 欧美日韩国产成人在线| 久久亚洲精品中文字幕| 久久久99国产精品免费| 欧美日韩1区| 人人爽人人爽av| 国产喷白浆一区二区三区| 国产真实的和子乱拍在线观看| 欧美日韩高清一区二区不卡| 国产中文在线观看| 91精品国产乱码久久久久久蜜臀| 九九99久久精品在免费线bt| 亚洲精品久久区二区三区蜜桃臀| 久久狠狠婷婷| 久久精品女同亚洲女同13| 亚洲乱码日产精品bd| 中文字幕自拍偷拍| 一区二区三区四区在线观看视频| 国产精品蜜芽在线观看| 国产 高清 精品 在线 a| 欧美在线亚洲| 日本成人xxx| 亚洲人成人一区二区在线观看| 亚洲熟妇无码久久精品| 国产亚洲成av人片在线观看桃| 中文字幕在线视频久| 国产在线精品二区| 亚洲精品专区| 亚洲av成人片色在线观看高潮| 亚洲宅男天堂在线观看无病毒| www.四虎在线观看| 欧美高清视频在线播放| 亚洲精品a区| 欧美性潮喷xxxxx免费视频看| 国产精品小仙女| 亚洲欧美一区二区三区四区五区| 91精品欧美久久久久久动漫 | 三级小视频在线观看| 91精品国产色综合| 欧美性生活一级片| 黄www在线观看| 久久精品一区八戒影视| 天天干天天插天天射| 中文字幕亚洲欧美| 四虎成人精品一区二区免费网站| 三年中文高清在线观看第6集| 狠狠色综合色综合网络| 强乱中文字幕av一区乱码| 精品国产乱码久久久久久图片| 俺来也官网欧美久久精品| 久久99蜜桃综合影院免费观看| 国产情侣久久| 黑人と日本人の交わりビデオ| 欧美日本高清视频在线观看| 手机av免费在线| 黄色91av| 日韩精品一二三区| 91 在线视频| 精品久久久久久久久久久院品网| 深夜av在线| 神马影院午夜我不卡影院| 精油按摩中文字幕久久| 久久精品国产av一区二区三区| 日韩电影大片中文字幕| 欧美aaa视频| 久久天天东北熟女毛茸茸| av电影一区二区| 中文在线字幕av| 久久99热这里只有精品国产| 三级小说欧洲区亚洲区| 欧美成人黄色网址| 亚洲一级在线观看| 国产福利片在线| 亚洲最大的av网站| 亚洲尤物在线| 成人免费毛片xxx| 日韩av在线高清| 亚洲国产综合在线观看| 国产精品专区在线| 国产精品国模大尺度视频| 手机在线观看免费av| 国产精品亚发布| 国产手机视频一区二区| 国产精品夜夜夜爽阿娇| 精品一区二区电影| 日韩精品一区国产| 国产视频一区二区视频|