バイナリモードでファイルの読み込み

ロベールのC++入門講座 08-09

fstreamクラスを使ってのバイナリモードでファイルの読み込みをやってみます。

#include <iostream>
#include <fstream>
using std::cout; using std::endl;

int main () {
    std::fstream file;
    char buf[16];
    
    file.open("main.cpp",std::ios::in|std::ios::binary);
    if ( !file.is_open() ) {
        cout <<  "file open error" << endl;
        return EXIT_FAILURE;
    }
    
    while( !file.eof() ) {
        file.read(buf,sizeof(buf));
        
        for(int i=0,size=file.gcount();i<size;++i) {
            cout << buf[i] << std::flush;
        }
    }
    
    file.close();
    
    return 0;
}

できました。readを使って16バイトずつ読み込んでいます。

またgcountというのは直前のreadで読み込みに成功したバイト数を返すのでそれを条件にループして表示させればうまくいきます。