Взять значения из csv-файла и передать в качестве вклада
Ниже приводится основная часть кода, который принимает тестовые значения (x и y) и дает некоторые выходные данные
int main(void) { const std::vector<Tile> tiles{ Tile(0),Tile(1),Tile(2),Tile(3) }; // Test values const std::vector<std::pair<double, double>> test_values = { { 3542, 9966 }, { 354, 11261 }, { 354, 6932 }, { 2354, 2432 }, { 4354, 10002 }, { 7354, 4932 }, { 6739, 8600 } }; std::cout << "x\t" << "y" "\n"; // Check cell number for (const Tile& tile : tiles) { for (const auto [x, y] : test_values) { if (const auto [isInTile, cellNumber] = tile.getCellNumber(x, y); isInTile) { std::cout << x << "|\t|" << y << "\t|" << cellNumber << "\n"; } } } return 0; }
Выход :
x y 2354| |2432 |126 7354| |4932 |299 354| |9966 |580 354| |11261 |660 354| |6932 |380 6739| |8600 |517
что я хочу сделать, так это изменить код, чтобы тестовые значения ( x и y ) можно было брать непосредственно из csv-файла, а не вводить их все здесь.
Что я уже пробовал:
//Parses through csv file line by line and returns the data in vector of vector of strings. std::vector<std::vector<std::string> > CSVReader::getData() { std::ifstream file(fileName); std::vector<std::vector<std::string> > dataList; std::string line = ""; // Iterate through each line and split the content using delimeter while (getline(file, line)) { std::vector<std::string> vec; boost::algorithm::split(vec, line, boost::is_any_of(delimeter)); dataList.push_back(vec); } // Close the File file.close(); return dataList; } int main(void) { const std::vector<Tile> tiles{ Tile(0),Tile(1),Tile(2),Tile(3) }; // Test values const std::vector<std::pair<double, double>> test_values = { }; // Creating an object of CSVWriter CSVReader reader("test.csv"); // Get the data from CSV File std::vector<std::vector<std::string> > dataList = reader.getData(); for (std::vector<std::string> vec : dataList) { for (std::string data : vec) { std::pair<std::string, std::string> p = ; std::cout << data << " "; } std::cout << std::endl; } std::cout << "x\t" << "y" "\n"; // Check cell number for (const Tile& tile : tiles) { for (const auto [x, y] : test_values) { if (const auto [isInTile, cellNumber] = tile.getCellNumber(x, y); isInTile) { std::cout << x << "|\t|" << y << "\t|" << cellNumber << "\n"; } } } return 0; }
Я не смог передать считанные значения из csv файла в тестовые значения