CSVファイルを読み込んで,カンマを除いたデータを配列に書き込むプログラムです.

 Split(string &src, string key)でカンマの読み飛ばし,readCSV(string filename, int* p)でファイルのOpenと文字列データの数値への変換,配列への書き込みを行います.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;
vector<string> Split(string &src, string key);
bool readCSV(string filename, int* p);
int main(void){
  int data[256];//ファイルから読み込んだ数値を入れる配列
  readCSV("data.csv", data);//ファイルから読み込み

  //最初の10個を表示させてみる
  for(int i = 0; i < 10; ++i) {
    cout << data[i] << endl;
  }
}

bool readCSV(string filename, int* p) {
  fstream file;
  string str;
  file.open(filename.c_str(), ios::in);
  if(! file.is_open()) {
    return false;
  }
  while(getline(file, str)) {
    vector&lt;string> str_line = Split(str, (string)",");
    int size = str_line.size();
    for(int i = 0; i < size; ++i) {
      stringstream sstr;
      sstr << str_line[i];
      sstr >> p[i];
    }
    p += size;
  }
  file.close();
  return true;
}
vector&lt;string> Split(string &src, string key) {
  string str = src;
  vector&lt;string> str_line;
  int str_len = str.length();
  int key_len = key.length();
  int index = 0;
  while(index < str_len) {
    int oldindex = index;
    index = str.find(key, index);
    index = (index == string::npos ? str_len : index);
    string tmp = str.substr(oldindex, index - oldindex);
    str_line.push_back(tmp);
    index += key_len;
  }
  return str_line;
}