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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<cstdio>
|
||
|
std::
size_t
fread
(
void
*
buffer,
std::
size_t
size,
std::
size_t
count,
std::
FILE
*
stream
)
;
|
||
최대 count 개의 객체를 배열 buffer 로 읽어들입니다. 주어진 입력 스트림 stream 에서 각 객체마다 std::fgetc 를 size 회 호출하는 것처럼 동작하며, 얻어진 결과를 순서대로 buffer 의 연속된 위치에 저장합니다. 이때 unsigned char 배열로 재해석됩니다. 스트림의 파일 위치 지시자는 읽은 문자 수만큼 전진합니다.
객체가 TriviallyCopyable 하지 않다면, 동작은 정의되지 않습니다.
오류가 발생하면 스트림에 대한 파일 위치 지시자의 결과 값은 정의되지 않습니다. 부분 요소가 읽히면 그 값은 정의되지 않습니다.
목차 |
매개변수
| buffer | - | 읽을 배열의 첫 번째 객체를 가리키는 포인터 |
| size | - | 객체의 바이트 단위 크기 |
| count | - | 읽을 객체의 개수 |
| stream | - | 읽어올 입력 파일 스트림 |
반환값
성공적으로 읽은 객체의 수로, 오류나 파일 끝 조건이 발생한 경우 count 보다 적을 수 있습니다.
만약
size
또는
count
가 0이면,
fread
는 0을 반환하고 다른 동작을 수행하지 않습니다.
fread
는 파일 끝과 오류를 구분하지 않으며, 호출자는
std::feof
와
std::ferror
를 사용하여 어떤 상황이 발생했는지 확인해야 합니다.
예제
#include <cstddef> #include <cstdio> #include <fstream> #include <iomanip> #include <iostream> #include <vector> int main() { // 파일 준비 std::ofstream("test.txt") << 1 << ' ' << 2 << '\n'; std::FILE* f = std::fopen("test.txt", "r"); std::vector<char> buf(4); // char는 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은 trivially copyable이 아님 // 이는 정의되지 않은 동작을 초래함: // std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f); }
가능한 출력:
Read 4 objects: 0x31 0x20 0x32 0x0A
참고 항목
|
stdin
, 파일 스트림 또는 버퍼로부터 형식화된 입력을 읽음
(함수) |
|
|
파일 스트림으로부터 문자열을 가져옴
(함수) |
|
|
파일에 기록
(함수) |
|
|
C documentation
for
fread
|
|