★テキストファイルの一行読み込み★


プロジェクトフォルダに「Test.txt」というファイルを作り、中身を↓のように入力して保存しておいてください。

このファイルの中身を文字列としてstring型に読み込んでみます。

<sample program cpp030-01>

#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::ifstream ifsTest;

    ifsTest.open("Test.txt", std::ios::in);

    if (!ifsTest) {
        return 1;
    }

    std::string str;

    ifsTest >> str;

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

    std::cout << "str = " << str << std::endl;

    return 0;
}

<実行結果>

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

C言語のscanf関数やfscanf関数と同じく、空白文字は「区切り文字」となっています。

そのまま読み込むと、区切り文字までのデータしか読み込めません。

区切り文字で分けて読み込みたい場合はこれで良いのですが、一行まとめて読み込みたい場合どうすればよいでしょうか。


C言語では、scanf関数の書式を変えたり、gets関数やfgets関数で対応出来ました。

C++での対応方法を↓に書きます。

<sample program cpp030-02>

#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::ifstream ifsTest;

    ifsTest.open("Test.txt", std::ios::in);

    if (!ifsTest) {
        return 1;
    }

    std::string str;

    std::getline(ifsTest, str);

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

    std::cout << "str = " << str << std::endl;

    return 0;
}

<実行結果>

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

getline関数を使って、一行まとめて読み込む事が出来ました。

ノベルゲームなど、これで対応出来そうです。


余裕のある方は、C言語編のファイルを使ったゲームを書き換えてみてください。


次へ

戻る

目次へ