Некоторое время я нашел в сети следующий фрагмент кода 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);
}
}
Большое спасибо :)