名前空間
変種
操作

std::fread

提供: cppreference.com
< cpp‎ | io‎ | c
 
 
 
 
ヘッダ <cstdio> で定義
std::size_t fread(void* buffer, std::size_t size, std::size_t count, std::FILE* stream );

各オブジェクトに対して std::fgetcsize 回呼び、その結果を unsignedchar の配列として再解釈された buffer の連続する位置に取得順に格納したかのように、指定された入力ストリーム stream から配列 buffer に最大 count 個のオブジェクトを読み込みます。 ストリームのファイル位置指示子は、読み込んだ文字数だけ進められます。

オブジェクトが TriviallyCopyable でない場合、動作は未定義です。

エラーが発生した場合、ストリームのファイル位置指示子の結果の値は不定になります。 要素が部分的に読み込まれた場合、その値は不定になります。

目次

[編集]引数

buffer - 読み込む配列の最初のオブジェクトを指すポインタ
size - バイト単位の各オブジェクトのサイズ
count - 読み込むオブジェクトの数
stream - 読み込む入力ファイルストリーム

[編集]戻り値

読み込みに成功したオブジェクトの数。 エラーまたはファイル終端に達した場合は count より少なくなることがあります。

size または count がゼロの場合、 fread はゼロを返し、それ以外何の動作も行いません。

[編集]

#include <iostream>#include <cstdio>#include <fstream>#include <vector>int main(){// prepare filestd::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);}

出力:

1 2

[編集]関連項目

stdin、ファイルストリームまたはバッファから書式付き入力を行います
(関数)[edit]
ファイルストリームから文字列を取得します
(関数)[edit]
ファイルに書き込みます
(関数)[edit]
close