std:: fread
I/O manipulators | ||||
Print functions (C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23)
|
||||
(
C++98/26*
)
|
||||
(C++20)
|
||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23)
|
||||
(C++23)
|
||||
(C++23)
|
||||
(
C++98/26*
)
|
||||
(
C++98/26*
)
|
||||
(
C++98/26*
)
|
||||
Synchronized Output | ||||
(C++20)
|
||||
Types | ||||
Error category interface | ||||
(C++11)
|
||||
(C++11)
|
Types and objects | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
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.
fread
does not distinguish between end-of-file and error, and callers must use
std::feof
and
std::ferror
to determine which occurred.
Example
#include <cstddef> #include <cstdio> #include <fstream> #include <iomanip> #include <iostream> #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 trivially copyable const std::size_t n = std::fread(&buf[0], sizeof buf[0], buf.size(), f); std::cout << "Read " << n << " object" << (n > 1 ? "s" : "") << ": " << std::hex << std::uppercase << std::setfill('0'); for (char n : buf) std::cout << "0x" << std::setw(2) << static_cast<short>(n) << ' '; 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); }
Possible output:
Read 4 objects: 0x31 0x20 0x32 0x0A
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
|