用c ++

时间:2016-12-15 14:16:08

标签: c++ csv

我有一个.csv文件,其中只包含两个名称和人口年龄的列。它看起来像:

Name      Age
Peter     16
George    15.5
Daniel    18.5

我只想在双打矢量中收集人们的年龄。所以我想要像vect = {16,15.5,18.5}这样的东西。

如果仅使用标准库,我怎么能实现这一目标?

非常感谢

2 个答案:

答案 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);
}