ファイルの読み書きfstreamクラス

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

ファイルの読み書きはC言語のときに色々やりましたが、C++ではまだ殆どやってませんでした。

当然Cのようにfopen等で同じような実装もできるのですが、折角なのでC++特有のファイルの読み書きの方法を勉強したいと思います。

fstreamクラスです。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
    fstream file;
    string data;
    
    file.open("main.cpp",ios::in);
    if ( !file.is_open() ) {
        cout << "file open error" <<endl;
        return EXIT_FAILURE;
    }
    
    while(getline(file,data)){
        cout << data << endl;
    }
    
    file.close();
    
    return 0;
}
$ main
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
    fstream file;
    string data;

    file.open("main.cpp",ios::in);
    if ( !file.is_open() ) {
        cout << "file open error" <<endl;
        return EXIT_FAILURE;
    }

    while(getline(file,data)){
        cout << data << endl;
    }

    file.close();

    return 0;
}

うまくいってますね。

stringクラスのおかげでめちゃくちゃ処理が短いです。

C言語の場合、メモリを動的に確保したり、フラグメンテーションを意識したりとかなり大変な処理だったんですがC++スッキリ書けますね。