c ++ getline将一行的不同部分放入变量中

时间:2017-11-05 20:14:04

标签: c++ csv getline

对于我的生活,我似乎无法弄清楚如何正确地做到这一点。

首先,我从csv文件中读取一行。可以说,这条线有 2992854,BOB,3452,394832

我不想把每个结果都读到一个控制台,就像我发现的每个例子一样,我希望它们按顺序排列到这4个变量中:

    string line;
    ifstream inputFile("input.csv");

    std::list<Cramista> Cramistas;

    while (!inputFile.eof())
     {
        int time;
        string name;
        int location;
        int point;

        std::vector<std::string> stringArray;
        std::size_t position = 0, found;

        getline(inputFile, line);

        while ((found = line.find_first_of(',', position)) != std::string::npos)
        {
            stringArray.push_back(line.substr(position, found - position));
            position = found + 1;
        }

        time = stoi(stringArray[0]);
        name = stringArray[1];
        location = stoi(stringArray[2]);
        point = stoi(stringArray[3]);

    }

现在,这是我的代码:

{{1}}

更新: 所以,通过我在这里,我能够获得4行中的前3个,并将它们放入数组中,然后我可以将其转换为变量。试图找出如何获得第四部分。

我有2992854,BOB和3452,但我没有394832。

1 个答案:

答案 0 :(得分:0)

我的意思是基本上是为了避免使用

“将每个结果读入控制台”

cin >> time >> name >> location >> point;

你必须用逗号分隔行(假设它是一个字符串,然后将非字符串数据转换为整数。