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 手動結束輸入。
