读取.tsv文件中的特定列

时间:2017-01-14 01:20:52

标签: c++ csv

我试图将.tsv文件中的数据读入矢量。该文件的结构如下:

A    B
1    2
2    4
6    8

我想询问程序应该读取哪个列,然后将该列中的值推送到向量中。到目前为止我的代码是:

int main() {

string filename, column, headerLine;
vector<double> data, tempData;
int numColumn;

ifstream dataFile;
cout << "enter a filename" << endl;
cin >> filename;
dataFile.open(filename);
cout << "enter a column name" << endl;
cin >> column;
cout << "reading column " << column << " from " << filename;
getline(dataFile, headers);

//here's where I feel stuck

}

如果我可以将头文件放入名为headersList的向量中,然后对数据行执行类似的操作,我将能够执行此操作:

for(int i = 0; i < headersList.size(); i++) {
    if(headersList[i] == column) {
        numColumn = i;
    }
}
while(!dataFile.eof()) {
    //some way of getting the data points into a vector called tempData
    data.push_back(tempData[numColumn]);
    tempData.clear();
}

我真的很感激一些帮助

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

while(!dataFile.eof()) {
    std::string str;
    std::getline( dataFile, str);
    std::stringstream buffer(str);
    std::string temp;
    std::vector<double> values;

    while( getline( buffer, temp, '\t') ) {
        values.push_back( ::strtod(temp.c_str(), 0));
    }

    data.push_back(values[numColumn]);
}