C++fread小解


std::fread

——C++ 輸入/輸出庫 C 風格 I/O

定義於頭文件 <cstdio>

1 std::size_t fread( void* buffer, std::size_t size, std::size_t count, std::FILE* stream );

 

從給定輸入流 stream 讀取至多 count 個對象到數組 buffer 中,如同以對每個對象調用 size 次 std::fgetc ,並按順序存儲結果到轉譯為 unsigned char 數組的 buffer 中的相繼位置。流的文件位置指示器前進讀取的字符數。

若出現錯誤,則 stream 的結果值不確定。若只讀入部分的元素,則元素值不確定。

參數

1 buffer  -   指向要讀取的數組中首個對象的指針
2 size    -   每個對象的字節大小
3 count   -   要讀取的對象數
4 stream  -   讀取來源的輸入文件流

 

返回值 成功讀取的對象數,若出現錯誤或文件尾條件,則可能小於 count 。

若 size 或 count 為零,則 fread 返回零且不進行其他動作。

示例:

假設程序當前目錄下,已將有一個test.txt文件,內容為:

1 2

樣例代碼:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <fstream>
 4 #include <vector>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     freopen("test.txt", "r", stdin);
10 
11     std::vector<char> buf(4); // char 類型的vector, vector初始大小為4
12     std::fread(&buf[0], sizeof buf[0], buf.size(), stdin);
13 
14     for(char n : buf) // c++11
15         std::cout << n;
16 }

 

輸出:

1 2

警告:在默認從鍵盤讀入時,需用 Ctrl+Z 手動結束輸入。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM