我有一个.csv文件,其中只包含两个名称和人口年龄的列。它看起来像:
Name Age
Peter 16
George 15.5
Daniel 18.5
我只想在双打矢量中收集人们的年龄。所以我想要像vect = {16,15.5,18.5}这样的东西。
如果仅使用标准库,我怎么能实现这一目标?
非常感谢
答案 0 :(得分:2)
@BugsFree感谢您的脚本,但它似乎不适合我。
这是我最终如何做到的(如果有人感兴趣的话......)
ifstream infile("myfile.csv");
vector<string> classData;
vector<double> ages;
std::string line;
while (getline(infile, line,'\n'))
{
classData.push_back(line); //Get each line of the file as a string
}
int s = classData.size();
for (unsigned int i=1; i<s; ++i){
std::size_t pos = classData[i].find(","); // position of the end of the name of each one in the respective string
ages[i-1] = std::stod(classData[i].substr(pos+1,classData[i].size())); // convert string age to a double
}
答案 1 :(得分:0)
您可以这样做:
#include <sstream>
#include <string>
#include <fstream>
ifstream infile( "yourfile.csv" );
std::vector<double> ages;
while (infile)
{
std::string line;
if (!std::getline( infile, line,' ' )) break;
std::istringstream iss(line);
string name;
double age;
if (!(iss >> name >> age)) { break; }
ages.push_back(age);
}