cpp_test6.cc

やること

解説

別ファイルに書いてあるデータを読み込んでみます。 cpp ディレクトリに data.dat という名前のデータを用意しました。 中身は以下のとおりです。

1   1
2   4
3   9
4   16
5   25
6   36
7   49
8   64
9   81
10  100

数字はタブ文字で区切られています。 半角スペース区切りの文字でも以下の方法で読み込めます[1]

データを読み込むには,初めにファイルを開く必要があります。 C++ では以下のように行います。

ifstream ifs_name ( data_name );

ここで ifs_name は ifstream というクラス(規模の大きな変数みたいなもの)の名前です。 data_name はデータファイルの名前(+ パス[2])です。

データを double 型変数に格納するには,

double value;
ifs >> value;

のように行います。

データが文字列の時は, int や double の変数に格納してはいけません。

ループ中でデータをまとめて取得する

データはループを使って読み出すと便利です。

読み出すデータの数が決まっている時は for ループ,そうでない時は while ループを使うのが いいでしょう。

for ループで 100 こデータを読み出すなら,

for( int i=0; i<100; i++ )
    ifs >> value;

とすればよいでしょう。

while 文で読む時は

while( ! (ifs.eof() ) )
{
    ifs >> value;
}

のように, ifs がファイルの終わり (EOF) に来るまでループを繰り返すか,

while( ifs >> value )

のようにすることもできます。 場合によって使い分けてください。


  1. タブや半角スペース区切り以外にも色々なフォーマットのデータが存在します。カンマ区切り (CSV),セミコロン区切り etc.  ↩

  2. ある場所から別の場所までの道のりを示すもの。例えば,カレントディレクトリにある data ディレクトリの data1.dat というファイルへのパスは data/data1.dat と書ける。相対パスと絶対パスの2種類が存在する。  ↩