Segfault при доступе к CSV-файлу - PullRequest
0 голосов
/ 14 июля 2020

Некоторое время я нашел в сети следующий фрагмент кода go, так как я хотел извлечь данные из файла CSV, который работал нормально, пока не перестал работать. Теперь это вызывает segfault, который сводит меня с ума, поскольку я не очень разбираюсь в C ++. Кажется, я не могу найти источник этого segfault. Помогите Pleeeeeeease.

Я помещаю функцию в файл заголовка (определение внутри файла заголовка, а также простое)

Стоит отметить, что код работает в другой папке, но не в моем текущем, где я создаю библиотеку, а все другие файлы заголовков (классы) создаются внутри пространства имен (хотя не уверен, связано ли это с этим).

Это файл заголовка:

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

Большое спасибо :)

1 Ответ

0 голосов
/ 23 июля 2020

Значит, файл даже не открывался. Чтобы файл был открыт, файл csv должен находиться в той же папке, что и исполняемый файл, а не в той же папке, что и основной.

...