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 手动结束输入。