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

 

posted @ 2018-08-18 17:39  航空信奥  阅读(4654)  评论(0编辑  收藏  举报