std::fread
Defined in header <cstdio>
|
||
std::size_t fread( void* buffer, std::size_t size, std::size_t count, std::FILE* stream ); |
||
Reads up to count
objects into the array buffer
from the given input stream stream
as if by calling std::fgetc size
times for each object, and storing the results, in the order obtained, into the successive positions of buffer
, which is reinterpreted as an array of unsigned char. The file position indicator for the stream is advanced by the number of characters read.
If the objects are not TriviallyCopyable
, the behavior is undefined.
If an error occurs, the resulting value of the file position indicator for the stream is indeterminate. If a partial element is read, its value is indeterminate.
Parameters
buffer | - | pointer to the first object in the array to be read |
size | - | size of each object in bytes |
count | - | the number of the objects to be read |
stream | - | input file stream to read from |
Return value
Number of objects read successfully, which may be less than count
if an error or end-of-file condition occurs.
If size
or count
is zero, fread
returns zero and performs no other action.
Example
#include <iostream> #include <cstdio> #include <fstream> #include <vector> int main() { // prepare file std::ofstream("test.txt") << 1 << ' ' << 2 << '\n'; std::FILE* f = std::fopen("test.txt", "r"); std::vector<char> buf(4); // char is trivally copyable std::fread(&buf[0], sizeof buf[0], buf.size(), f); for(char n : buf) std::cout << n; std::vector<std::string> buf2; // string is not trivially copyable // this would result in undefined behavior // std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f); }
Output:
1 2
See also
reads formatted input from stdin, a file stream or a buffer (function) | |
gets a character string from a file stream (function) | |
writes to a file (function) | |
C documentation for fread
|