名前空間
変種
操作

std::fwrite

From cppreference.com
< cpp‎ | io‎ | c
 
 
 
C形式I/O
型とオブジェクト
関数
ファイルアクセス
直接入出力
fwrite
非書式化入出力
書式付き入力
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
書式付き出力
ファイルポジショニング
エラーハンドリング
ファイル操作
 
ヘッダ<cstdio>で定義
std::size_t fwrite( const void* buffer, std::size_t size, std::size_t count, std::FILE* stream );

指定された配列bufferから、最大count個のバイナリオブジェクトを出力ストリームstreamに書き込みます。オブジェクトは、各オブジェクトをunsigned charの配列として再解釈し、各オブジェクトに対してunsigned charsizestd::fputcでストリームに書き込むかのように書き込まれます。ストリームのファイル位置指示子は、書き込まれた文字数だけ進められます。

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

エラーが発生した場合、ストリームのファイル位置指示子の結果の値は未確定です。

目次

[編集] パラメータ

buffer - 書き込む配列の最初のオブジェクトへのポインタ
size - 各オブジェクトのサイズ
count - 書き込むオブジェクトの数
stream - 書き込む出力ファイルストリーム

[編集] 戻り値

正常に書き込まれたオブジェクトの数。エラーが発生した場合は、countより少なくなることがあります。

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

[編集]

#include <array>
#include <cstdio>
#include <vector>
 
int main ()
{
    // write buffer to file
    if (std::FILE* f1 = std::fopen("file.bin", "wb"))
    {
        std::array<int, 3> v = {42, -1, 7}; // underlying storage of std::array is an array
        std::fwrite(v.data(), sizeof v[0], v.size(), f1);
        std::fclose(f1);
    }
 
    // read the same data and print it to the standard output
    if (std::FILE* f2 = std::fopen("file.bin", "rb"))
    {
        std::vector<int> rbuf(10); // underlying storage of std::vector is also an array
        std::size_t sz = std::fread(rbuf.data(), sizeof rbuf[0], rbuf.size(), f2);
        std::fclose(f2);
        for (std::size_t n = 0; n < sz; ++n)
            std::printf("%d\n", rbuf[n]);
    }
}

出力

42
-1
7

[編集] 関連項目

stdout、ファイルストリーム、またはバッファにフォーマットされた出力を書き込む
(関数) [編集]
ファイルストリームに文字列を書き込む
(関数) [編集]
ファイルから読み込む
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)