std::fread
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <cstdio> で定義
|
||
std::size_t fread( void* buffer, std::size_t size, std::size_t count, std::FILE* stream ); |
||
各オブジェクトに対して std::fgetc を size 回呼び、その結果を unsigned char の配列として再解釈された 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 file
std::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言語リファレンス
| |