91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用 C++ 讀寫文件

發布時間:2021-07-12 16:15:23 來源:億速云 閱讀:152 作者:chen 欄目:編程語言

這篇文章主要講解了“怎么用 C++ 讀寫文件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用 C++ 讀寫文件”吧!


在 C++ 中,對文件的讀寫可以通過使用輸入輸出流與流運算符 >> 和 << 來進行。當讀寫文件的時候,這些運算符被應用于代表硬盤驅動器上文件類的實例上。這種基于流的方法有個巨大的優勢:從  C++  的角度,無論你要讀取或寫入的內容是文件、數據庫、控制臺,亦或是你通過網絡連接的另外一臺電腦,這都無關緊要。因此,知道如何使用流運算符來寫入文件能夠被轉用到其他領域。

輸入輸出流類

C++ 標準庫提供了 ios_base 類。該類作為所有 I/O 流的基類,例如 basic_ofstream 和 basic_ifstream。本例將使用讀/寫字符的專用類型 ifstream 和 ofstream

  • ofstream:輸出文件流,并且其能通過插入運算符 << 來實現。

  • ifstream:輸入文件流,并且其能通過提取運算符 >> 來實現。

該兩種類型都是在頭文件 <fstream> 中所定義。

從 ios_base 繼承的類在寫入時可被視為數據接收器,在從其讀取時可被視為數據源,與數據本身完全分離。這種面向對象的方法使 關注點分離separation of concerns 和 依賴注入dependency injection 等概念易于實現。

一個簡單的例子

本例程是非常簡單:實例化了一個 ofstream 來寫入,和實例化一個 ifstream 來讀取。

#include <iostream> // cout, cin, cerr etc...#include <fstream> // ifstream, ofstream#include <string>  int main(){    std::string sFilename = "MyFile.txt";         /******************************************     *                                        *     *                WRITING                 *     *                                        *     ******************************************/     std::ofstream fileSink(sFilename); // Creates an output file stream     if (!fileSink) {        std::cerr << "Canot open " << sFilename << std::endl;        exit(-1);    }     /* std::endl will automatically append the correct EOL */    fileSink << "Hello Open Source World!" << std::endl;      /******************************************     *                                        *     *                READING                 *     *                                        *     ******************************************/       std::ifstream fileSource(sFilename); // Creates an input file stream     if (!fileSource) {        std::cerr << "Canot open " << sFilename << std::endl;        exit(-1);    }    else {        // Intermediate buffer        std::string buffer;         // By default, the >> operator reads word by workd (till whitespace)        while (fileSource >> buffer)        {            std::cout << buffer << std::endl;        }    }     exit(0);}

該代碼可以在 GitHub 上查看。當你編譯并且執行它時,你應該能獲得以下輸出:

怎么用 C++ 讀寫文件

Console screenshot

這是個簡化的、適合初學者的例子。如果你想去使用該代碼在你自己的應用中,請注意以下幾點:

  • 文件流在程序結束的時候自動關閉。如果你想繼續執行,那么應該通過調用 close() 方法手動關閉。

  • 這些文件流類繼承自 basic_ios(在多個層次上),并且重載了 ! 運算符。這使你可以進行簡單的檢查是否可以訪問該流。在 cppreference.com 上,你可以找到該檢查何時會(或不會)成功的概述,并且可以進一步實現錯誤處理。

  • 默認情況下,ifstream 停在空白處并跳過它。要逐行讀取直到到達 EOF ,請使用 getline(...) 方法。

  • 為了讀寫二進制文件,請將 std::ios::binary 標志傳遞給構造函數:這樣可以防止 EOL 字符附加到每一行。

從系統角度進行寫入

寫入文件時,數據將寫入系統的內存寫入緩沖區中。當系統收到系統調用 sync 時,此緩沖區的內容將被寫入硬盤。這也是你在不告知系統的情況下,不要卸下 U 盤的原因。通常,守護進程會定期調用 sync。為了安全起見,也可以手動調用 sync()

#include <unistd.h> // needs to be included sync();

總結

在 C++ 中讀寫文件并不那么復雜。更何況,如果你知道如何處理輸入輸出流,(原則上)那么你也知道如何處理任何類型的輸入輸出設備。對于各種輸入輸出設備的庫能讓你更容易地使用流運算符。這就是為什么知道輸入輸出流的流程會對你有所助益的原因。

感謝各位的閱讀,以上就是“怎么用 C++ 讀寫文件”的內容了,經過本文的學習后,相信大家對怎么用 C++ 讀寫文件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

阿拉善左旗| 芜湖市| 广州市| 富阳市| 安义县| 乌兰县| 普安县| 汤原县| 云林县| 连城县| 琼结县| 五大连池市| 宜州市| 绥中县| 来凤县| 田林县| 桑植县| 镇安县| 突泉县| 衡阳县| 庐江县| 友谊县| 会同县| 登封市| 政和县| 奇台县| 稷山县| 深州市| 呼玛县| 兴海县| 开平市| 丁青县| 襄汾县| 镇坪县| 宜章县| 榆社县| 东阿县| 咸阳市| 灵宝市| 康马县| 昭通市|