生データのファイル入出力

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

C言語のときにもやりましたね。C++ではfstreamで同様のことが可能です。

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

int main (int argc,const char* argv[]) {
    std::string type("w");
    if ( argc >= 2 ) {
        type = argv[1];
    }
    
    std::fstream file;
    int i;
    
    if ( type == "w" ) {
        file.open("test.txt",std::ios::out|std::ios::binary);
        if (! file.is_open() ) {
            return EXIT_FAILURE;
        }
        
        i = 12345678;
        file.write( reinterpret_cast<char*>(&i), sizeof(int) );
        file.close();
        
        cout << "write test.txt" << endl;
    }
    else if ( type == "r" ) {
        file.open("test.txt",std::ios::in|std::ios::binary);
        if (! file.is_open() ) {
            return EXIT_FAILURE;
        }
        
        file.read( reinterpret_cast<char*>(&i), sizeof(int) );
        file.close();
        
        cout << i << endl;
    }
    else {
        cout << "type error" << endl;
        return EXIT_FAILURE;
    }
    
    return 0;
}
$ main w
write test.txt

$ main r
12345678

久しぶりにコマンドライン引数の処理を書いてみました。

使ってないと忘れそうですからね。

writeで出力、readで入力ですね。クラスになっただけでC言語と殆ど書き方が変わりません。