Пространства имён
Варианты
Действия

std::fread

Материал из cppreference.com
< cpp | io | c
 
 
Библиотека ввода/вывода
Манипуляторы ввода/вывода
Функции print (C++23)
Ввод/вывод в стиле C
Буферы
(устарело в C++98)
Потоки
Абстракции
Файловый ввод/вывод
Ввод/вывод строк
Ввод/вывод массивов
(устарело в C++98)
(устарело в C++98)
(устарело в C++98)
Синхронизированный вывод
Типы
Интерфейс категорий ошибок
(C++11)
 
Ввод/Вывод в стиле C
Типы и объекты
Функции
Доступ к файлам
Прямой ввод/вывод
Неформатированный ввод/вывод
Форматированный ввод
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
Форматированный вывод
Позиционирование файла
Обработка ошибок
Операции с файлами
 
<tbody> </tbody>
Определено в заголовочном файле <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 равно нулю, fread возвращает ноль и не выполняет никаких других действий.

Пример

#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 это тривиально копируемый тип
    std::fread(&buf[0], sizeof buf[0], buf.size(), f);

    for(char n : buf)
        std::cout << n;

    std::vector<std::string> buf2; // string нетривиально копируемый тип
// это приведет к неопределенному поведению
//    std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f);
}

Вывод:

1 2

См. также

производит форматированный ввод из stdin, файлового потока или буфера
(функция) [править]
получает строку символов из файла потока
Оригинал:
gets a character string from a file stream
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
пишет в файл
Оригинал:
writes to a file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]