名前空間
変種
操作

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

オブジェクトが 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 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]