读取 .tsv 文件中的特定列

Reading a specific column in a .tsv file

本文关键字:tsv 文件 读取      更新时间:2023-10-16

我正在尝试将数据从 .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();
}

我真的很感激一些帮助

尝试以下代码:

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]);
}