C++語言-06-文件操作

来源:http://www.cnblogs.com/theDesertIslandOutOfTheWorld/archive/2016/03/01/5229843.html
-Advertisement-
Play Games

示例闡述C++中的文件操作


C語言文件操作

    C++語言是C語言的超集,是在C語言的基礎上增加了面向對象的特性而創造出來的,最初被命名為帶類的C。所以C++語言中包含了C語言的思想,如:C++語言中文件操作的原理與步驟與C語言基本相同,請對比C語言中的文件操作,來學習和理解C++中的文件操作。以下是C語言文件操作的Blog連接:

C++語言文件操作

    C++語言中標準庫fstream,提供了有關文件操作所需的條件。
    
  • 與文件操作相關的數據類型
    • ifstream
      • 輸入文件流,用於從文件讀取信息
      • 使用其對象打開文件時,預設為:ios::in
    • ostream
      • 輸出文件流,用於創建文件(若關聯的文件不存在)並向文件寫入信息
      • 使用其對象打開文件時,預設為:ios::out
    • fstream
      • 文件流,具備ifstream與ostream的功能
      • 使用其對象打開文件時,預設為:ios::in | ios::out
  • 文件的打開模式

    標誌 含義
    ios::app 追加模式,將所有寫入的內容追加到文件末尾
    ios::ate 文件打開後定位到文件末尾
    ios::in 打開文件用於讀取
    ios::out 打開文件用於寫入
    ios::trunc 若文件已經存在,其內容將在打開文件之前被截斷,即把文件長度設為0(文件內容會被清空)
  • 文件操作的步驟
    • 打開文件,可以使用以下函數打開文件:

      // 使用char類型字元串指定文件名和位置
      void open(const char* __s, ios_base::openmode __mode = ios_base::in | ios_base::out)
      // 使用string類型字元串指定文件名和位置
      void open(const string& __s, ios_base::openmode __mode = ios_base::in | ios_base::out)
    • 操作文件
      • 讀取文件

        // 使用流提取運算符 >>,讀取到空格時會結束
        // 使用 get() 函數
        basic_istream& get(char_type* __s, streamsize __n);
        // 使用 getline() 函數
        basic_istream& getline(char_type* __s, streamsize __n);
        // 使用 read()
        basic_istream& read (char_type* __s, streamsize __n);
        // 使用 readsome() 函數, 註意函數的返回值類型不是 basic_istream&
        streamsize readsome(char_type* __s, streamsize __n);
      • 寫入文件

        // 使用流插入運算服務 << 
        // 使用 put() 函數,一次只能寫入一個字元
        basic_ostream& put(char_type __c);
        // 使用 write() 函數
        basic_ostream& write(const char_type* __s, streamsize __n);
    • 關閉文件

      // 使用 close() 函數
      void close();

文件位置重定位

  • 查找方向

    標誌 含義
    ios::beg 預設的方向,從流的開頭開始定位
    ios::cur 從流的當前位置開始定位
    ios::end 從流的末尾開始定位
  • 文件位置重定位相關的函數
    • 輸入流相關

      // __pos 指定位置,查找方向為預設方向:從流的開頭開始向後定位。即:定位到流的第 __pos 個位元組
      basic_istream& seekg(pos_type __pos);
      // __off 指定偏移量,__dir 指定查找方向。即:按 __dir 指定的查找方向偏移 __off 位元組
      basic_istream& seekg(off_type __off, ios_base::seekdir __dir);
    • 輸出流相關

      // __pos 指定位置,查找方向為預設方向:從流的開頭開始向後定位。即:定位到流的第 __pos 個位元組
      basic_ostream& seekp(pos_type __pos);
      // __off 指定偏移量,__dir 指定查找方向。即:按 __dir 指定的查找方向偏移 __off 位元組
      basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);

示例

  • 讀取文件

    void readFromFile() {
        // 創建一個字元數組,用於暫存用戶輸入的數據
        char data[50];
        // 打開文件(以讀模式打開文件)
        ifstream inputFile;
        inputFile.open("/Users/mac/Desktop/HelloWorld.txt");
        // 將文件的讀指針從開始位置向後移動 6 個位元組,即:從文件的第 6 個位元組開始讀取文件的內容
        inputFile.seekg(6, ios::beg);
        // 讀取文件的內容
        cout << "Reading from the file" << endl;
        // 使用 read()函數讀取文件內容到 data 中
        inputFile.read(data, 50);
        cout << data << endl;
        // 關閉打開的文件
        inputFile.close();
    }
  • 寫入文件

    void writeToFile() {
        // 創建一個字元數組,用於暫存從文件讀取的數據
        char data[50];
        // 打開文件(以寫模式打開文件)
        ofstream outputFile;
        outputFile.open("/Users/mac/Desktop/HelloWorld.txt");
        // 輸入要寫入文件的內容
        cout << "Writing to the file" << endl;
        cout << "Input a message:" << endl;
        cin.getline(data, 50);
        // 使用 write() 函數,將data數據寫入到文件中
        outputFile.write(data, 50);
        // 關閉打開的文件
        outputFile.close();
    }
  • main函數

    int main(int argc, const char * argv[]) {
        // 寫入文件
        writeToFile();
        // 讀取文件
        readFromFile();
        return 0;
    }
  • 運行結果如圖


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • excel表格上傳和下載,斷斷續續寫了很久,趕緊記下來萬一以後忘記就虧大了= = 資料庫有三張表: 上傳一張表格,每個sheet對應一個if_table_n,if_user_table記錄上傳信息,if_column_map記錄每個if_table_n的列名與資料庫列名對應,if_system_co
  • 一、網路編程中的重要的類 1、InetAddress:互聯網協議(IP)地址 封裝電腦的IP地址和DNS(功能變數名稱解析),沒有埠,構造器私有化。通過相關方法得到。 例如: public class InetDemo01 { public static void main(String[] args)
  • web應用程式基本上都是在瀏覽器地址欄輸入一段網站,然後進入,最後瀏覽器顯示你想要的東西。 這就是用戶所能體會到的東西。那作為程式員我們看到了什麼呢? 一次HTTP 請求主要的流程是: 1、DNS伺服器解析功能變數名稱(瀏覽器地址欄的地址)獲取相應的IP地址、埠號、 服務名。 2、客戶端根據解析後的地址向
  • 在前面一篇文章中已經講述了在進程和線程的由來,今天就來講一下在Java中如何創建線程,讓線程去執行一個子任務。下麵先講述一下Java中的應用程式和進程相關的概念知識,然後再闡述如何創建線程以及如何創建進程。下麵是本文的目錄大綱: 一.Java中關於應用程式和進程相關的概念 二.Java中如何創建線程
  • 本節主要介紹一下Pandas的數據結構,本文引用的網址:https://www.dataquest.io/mission/146/pandas-internals-series 本文所使用的數據來自於:https://github.com/fivethirtyeight/data/tree/mast...
  • HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程式需要直接通過 HTTP 協議來訪問網路資源。在 JDK 的 java.net 包中已經提供了訪問 HTTP 協議的基本功能:HttpURLConnection。 HttpURLConnection
  • 最近我在用梯度下降演算法繪製神經網路的數據時,遇到了一些演算法性能的問題。梯度下降演算法的代碼如下(偽代碼): Python 1 2 3 def gradient_descent(): # the gradient descent code plotly.write(X, Y) 一般來說,當網路請求 pl
  • Java mkdirs()創建目錄實例 Java deleteDir() 刪除目錄實例 Java 如何判斷目錄是否為空 Java 使用file.isHidden() 方法來判斷文件是否隱藏 Java 獲取目錄大小實例 Java 查找指定目錄下的文件 Java 如何獲取文件的上級目錄 Java 獲取目
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...