首页 > 解决方案 > 尝试使用 C++ 读取 CSV 文件出现 invalid_argument 错误

问题描述

这是我用来尝试将 csv 文件中的两列数据读取到 C++ 中的向量中的代码。我能够读取标题,但是当我继续读取实际数据时,我收到一个涉及“stof”的错误,它将字符串转换为浮点数。我很确定这个错误是由于 stof 无法找到任何数量的字符串来转换为浮点数,但这没有任何意义,因为括号内的变量确实是一个字符串,它包含数字。

#include <vector>
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{


    ifstream inFS;
    string line;
    string rm_in, medv_in;
    const int MAX_LEN = 1000;
    vector<double> rm(MAX_LEN);
    vector<double> medv(MAX_LEN);

    cout << "Opening file MyData.csv" << endl;

    inFS.open("MyData.csv");
    if(!inFS.is_open())
    {
        cout << "Could not open file MyData.csv" << endl;
        return 1;
    }

    cout << "Reading line 1" << endl;
    getline(inFS, line);

    cout << "heading :" << line << endl;

    int numObservations = 0;
    while(inFS.good())
    {
        getline(inFS, rm_in , ',');
        getline(inFS, medv_in , '\n');
        rm.at(numObservations) = stof(rm_in);
        medv.at(numObservations) = stof(medv_in);
        numObservations++;
    }
    rm.resize(numObservations);
    medv.resize(numObservations);

}

我得到的错误是: 错误

标签: c++

解决方案


推荐阅读