std::fread
提供: cppreference.com
ヘッダ <cstdio> で定義 | ||
std::size_t fread(void* buffer, std::size_t size, std::size_t count, std::FILE* stream ); | ||
各オブジェクトに対して std::fgetc を size
回呼び、その結果を unsignedchar の配列として再解釈された buffer
の連続する位置に取得順に格納したかのように、指定された入力ストリーム stream
から配列 buffer
に最大 count
個のオブジェクトを読み込みます。 ストリームのファイル位置指示子は、読み込んだ文字数だけ進められます。
オブジェクトが TriviallyCopyable でない場合、動作は未定義です。
エラーが発生した場合、ストリームのファイル位置指示子の結果の値は不定になります。 要素が部分的に読み込まれた場合、その値は不定になります。
目次 |
[編集]引数
buffer | - | 読み込む配列の最初のオブジェクトを指すポインタ |
size | - | バイト単位の各オブジェクトのサイズ |
count | - | 読み込むオブジェクトの数 |
stream | - | 読み込む入力ファイルストリーム |
[編集]戻り値
読み込みに成功したオブジェクトの数。 エラーまたはファイル終端に達した場合は count
より少なくなることがあります。
size
または count
がゼロの場合、 fread
はゼロを返し、それ以外何の動作も行いません。
[編集]例
Run this code
#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、ファイルストリームまたはバッファから書式付き入力を行います (関数) | |
ファイルストリームから文字列を取得します (関数) | |
ファイルに書き込みます (関数) | |
fread の C言語リファレンス |