★テキストファイルの書き込み★


C言語編でもファイル操作は説明しましたが、C++ではストリームを使ったファイル操作を行います。

ストリームを使うと言っても、ファイルを開く、閉じるといった概念自体が変わることはありません。

ちょっとした違いですので、慣れれば問題無く使えるようになります。


ファイルを使うためには、ファイルストリーム(fstream)をインクルードします。

ファイルストリームには、入力ストリームと出力ストリームがあります。

※コンソールに対する入力ストリーム(cin)と出力ストリーム(cout)と同じです。

では、出力ストリームを使ってデータをファイルに書き込んでみましょう。


出力ストリームの準備


<sample program cpp028-01>

#include <iostream>
#include <fstream>

int main()
{
    std::ofstream ofsTest;

    return 0;
}

出力用のファイルストリームは「ofstream」と言います。

ファイルストリームも「名前空間std」に所属しています。


ファイルを開く


ファイルを開くには、ファイルストリームのopen関数を使います。

※前に触れましたが、メンバ関数というものです。

<sample program cpp028-02>

#include <iostream>
#include <fstream>

int main()
{
    std::ofstream ofsTest;

    ofsTest.open("Test.txt", std::ios::out);

    if (!ofsTest) {
        return 1;
    }

    return 0;
}

第1引数はファイル名で、第2引数は「モード」です。

モードはC言語のfopen関数でも指定する必要がありましたが、見た目が変わっています。

C言語C++
"r"std::ios::in
"w"std::ios::out
"a"std::ios::app
"b"std::ios::binary

エラーチェックもC言語の時とイメージは変わっていません。


ファイルを閉じる


<sample program cpp028-03>

#include <iostream>
#include <fstream>

int main()
{
    std::ofstream ofsTest;

    ofsTest.open("Test.txt", std::ios::out);

    if (!ofsTest) {
        return 1;
    }

    if (ofsTest.is_open()) {
        ofsTest.close();
    }

    return 0;
}

ファイルが開いているかどうか、is_open関数で調べてから閉じています。


データの書き込み


最後にデータの書き込みをやってみます。

これまでコンソールでの入出力をやってきましたから、見れば分かると思います。

<sample program cpp028-04>

#include <iostream>
#include <fstream>

int main()
{
    std::ofstream ofsTest;

    ofsTest.open("Test.txt", std::ios::out);

    if (!ofsTest) {
        return 1;
    }

    ofsTest << "Hello" << std::endl;

    ofsTest << 123 << std::endl;

    if (ofsTest.is_open()) {
        ofsTest.close();
    }

    return 0;
}

<実行結果>

続行するには何かキーを押してください・・・

ストリームとしての機能は同じですから、「<<」でファイルに書き込む事が出来ます。

実行後に、プロジェクトフォルダを開き、「Test.txt」を開いてください。

このようになっていれば、成功です。

次回は、テキストファイルの読み込みについて説明します。


次へ

戻る

目次へ