wvogel日記

自分用の技術備忘録が多めです.

vector,fstream

いつか、vectorテンプレートを使った記事を書いたと思うが、
今日再び書くことになったので、ファイル操作合わせて、すこし記事をば。


使用言語はC++
オブジェクト指向オブジェクト指向でいいところはありますね。
関数同士の関連性を管理しやすい。
ただHaskellの場合は、いつか書いたと思うけど、関連性じゃなくて機能そのものが重視されるので、オブジェクト指向衣要らないといえばいらないけれど。
参照透明性が約束されない言語においてはやはりオブジェクト指向は有用だと感じます。

a.txtと名づけたテキストファイルに適当に情報を書いておきます。

qwerty 1.00 1234 a
asdfgh 3.21 5678 b

のように。
で、こいつを読み出してvectorを用いて可変長でつらつらつなげていくお仕事

#include<fstream>
#include<iostream>
#include<vector>

using namespace std;

typedef struct sample{
  string a;
  float b;
  unsigned int c;
  string d;
}sample_t;

int main(){
  vector<sample_t> sample;
  unsigned int i;
  land_t s;

  ifstream ifs ("a.txt");

  while(ifs && (ifs >> s.a)){
    ifs >> s.b >> s.c >> s.d;
    sample.push_back(s);
  }

  for(i = 0 ; i < sample.size() ; i++){
    cout << sample[i].a << " " ;
    cout << sample[i].b << " " ;
    cout << sample[i].c  << " ";
    cout << sample[i].d << endl;
  }

  ifs.close();
  return 0 ;
}