マイコンプラス

    二足歩行ロボットの制御やセンサの使い方、ロボットキット、ロボットの大会などについて紹介します

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。
    [ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

    [C++]CSVファイルの読み込み

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

    #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<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<string> Split(string &src, string key) {

    string str = src;
    vector<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;
    }

    [ 2012/11/30 02:15 ] C言語 | TB(0) | CM(0)
    コメントの投稿












    管理者にだけ表示を許可する
    トラックバック
    この記事のトラックバックURL



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。