访问 csv 文件时出现段错误

Segfault when accessing a csv file

前段时间我想从 CSV 文件中提取数据时在网上找到了以下代码,在它停止工作之前它工作得很好。它现在导致了一个让我发疯的段错误,因为我在 C++ 方面不是很有经验。我似乎无法找到此段错误的来源。帮助pleeeeeeeease。

我把函数放在一个头文件里面(头文件里面的定义也很简单明了)

值得一提的是,该代码在另一个文件夹中有效,但在我当前创建库的文件夹中无效,所有其他头文件 (类) 都在命名空间内创建(不确定如果这与此有关)。

这是头文件:

std::vector<std::vector<std::string> > getData(std::string fileName, std::string delimeter = ",")
{
    std::ifstream file(fileName);
 
    std::vector<std::vector<std::string> > dataList;

    std::string line = "";

    while (getline(file, line))
    {
        // my investigation led me here: code does not get to this point; it skips the while loop that is why the dataList remains empty

        std::vector<std::string> vec;
        boost::algorithm::split(vec, line, boost::is_any_of(delimeter));
        dataList.push_back(vec);
    }
    file.close();
    
 
    return dataList;
}

这是主要的

int main(){

    int x{7};
    
    Eigen::VectorXd  X_step(x);
    std::vector<Eigen::VectorXd> X;

    std::vector<std::vector<std::string> > dataList = getData("MyFile.csv");
    std::cout << "data list " << dataList[0][0] << "\n"; // dataList seems to be empty and also cout causes a segfault

    for(std::vector<std::string> vec : dataList)
    {
        int j{0};
        for(std::string data : vec)
        {
            X_step(j) = stod(data);
            j++;
        }
        X.push_back(X_step);
    }
}

非常感谢:)

很明显,文件甚至没有被打开。 为了确保文件被打开,csv 文件必须与可执行文件位于同一文件夹中,而不是与主文件位于同一文件夹中。