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
回呼び、その結果を 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言語リファレンス
|