我试图将.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();
}
我真的很感激一些帮助
答案 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]);
}