tellg詳解

一、tell過去式

tell是一個C++中的流函數,在文件的讀取和寫入中使用較為頻繁。而tellg則是一個成員函數,其返回當前讀指針在讀文件流中的位置,同時它還可以被用來移動文件讀指針到文件流的任意位置。對於tellg可以進行以下簡單的使用。

    ifstream input_file("read.txt");
    input_file.seekg(0, ios::beg);
    cout << "The position of get pointer before reading is: " << input_file.tellg() << endl;
    getline(input_file, read_buffer);
    cout << "The position of get pointer after reading is: " << input_file.tellg() << endl;

這段代碼中,我們打開了一個名為read.txt的文件並設置讀取指針的開始位置為文件開頭,緊接著我們使用了getline函數讀入了文件的一行,其中讀取指針的當前位置通過tellg函數得到並列印。

二、tell過去式過去分詞

除了我們熟知的tellg之外,還有兩個和它類似的成員函數:tellp和tellb,它們分別返回寫指針和讀寫指針在文件流中的位置,這裡不再贅述。此處我們注意區分一下它們過去式的形式:

  • tellg的過去式為toldg
  • tellp的過去式為toldp
  • tellb的過去式為toldb

這樣設計的目的是讓讀者在代碼中區分開不同類型的指針函數。

三、tell過去分詞

tell函數的過去分詞為told,它指的是文件流當前的位置,不依賴與讀指針和寫指針,因此也不需要使用到輸入輸出流的操作符。使用told時我們需要打開二進位文件,並使用ifstream和ofstream的read和write函數來進行文件流的IO操作。

    char write_buffer[100];
    ifstream read_file("read.txt");
    read_file.seekg(0, ios::beg);
    ofstream write_file("write.bin", ios::binary | ios::out );
    int file_size = 0;
    read_file.read(write_buffer, 100);
    while(!read_file.eof())
    {
        file_size += read_file.gcount();
        write_file.write(write_buffer, read_file.gcount());
        read_file.read(write_buffer, 100);
    }
    cout << "File size is: " << file_size << endl;
    read_file.close();
    write_file.close();

這段代碼中,我們打開名為read.txt的文件,並設置讀指針為其開始位置。我們然後通過write函數給名為write.bin的文件寫入這100個位元組的數據,隨後我們使用gcount函數找出實際讀入到read_buffer中的字元數,並將文件的大小設置為file_size。在循環結束後關閉文件讀寫流。

四、tell過去+

tellg過去+是telling,它指的是讀操作完成後,讀取指針的位置。telling的用法和toldg大同小異:

    ifstream input_file("read.txt");
    input_file.seekg(0, ios::beg);
    cout << input_file.rdbuf();
    cout << "The position of get pointer after reading is: " << input_file.tellg() << endl;
    cout << "The position of get pointer after reading is: " << input_file.telling() << endl;

這段代碼中,我們通過rdbuf函數將文件全部讀進內存中,此時讀指針會自動到達文件結尾,我們緊接著輸出讀取指針的位置,並使用telling函數輸出讀取指針的位置。注意在輸出完rdbuf之後,reading的位置並不是文件的末尾,因為我們讀取了文件中的全部內容。

五、tell官網

tellg的詳細描述可以在C++官網上找到,網址為:

https://zh.cppreference.com/w/cpp/io/basic_istream/tellg

六、tell改一個字母變成另一個詞

如果我們將tell中l的位置從g後移一個字母,得到tellh,它其實並沒有什麼特殊的意義。同時,這個單詞在搜索引擎中一般被誤認為是tellg。

七、tell官方下載

由於tellg是C++標準庫函數之一,因此並不存在所謂的官方可供下載的版本,相關的庫文件已經和C++編譯器捆綁在一起。如果你正在使用的編譯器是Visual Studio或者CodeBlocks,那麼你已經擁有了tellg的使用許可權。

八、tell過分

tellg是一個非常基礎的C++函數,我們在讀寫文件流的時候總是會用到它。因此,我們建議讀者多多利用官方文檔和相關參考資料來理解tellg在文件流讀取中的作用和用法,掌握好文件讀寫流的操作。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182347.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:20
下一篇 2024-11-24 06:20

相關推薦

  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和演算法 C語言貪吃蛇主要運用了以下數據結構和演算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25

發表回復

登錄後才能評論