User-14705882 Ответов: 1

Взять значения из 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 файла в тестовые значения

1 Ответов

Рейтинг:
0

Richard MacCutchan

Следующее утверждение является неполным.

std::pair<std::string, std::string> p = ;


Richard MacCutchan

Ну, не совсем ясно, что вы пытаетесь сделать в этот момент, и в чем заключается трудность.

Richard MacCutchan

Да, вы уже говорили нам об этом. Но какова реальная трудность с кодом, который у вас есть?

Richard MacCutchan

Хорошо, остановитесь, сделайте шаг назад и тщательно подумайте о том, что вы пытаетесь сделать. Никто здесь никогда не видел этот код раньше, поэтому мы полагаемся на вас, чтобы объяснить, что он должен делать и почему он не работает. Нехорошо говорить такие вещи, как, "не действовать", - это неправильно." и т.д., Потому что это ничего не значит. Поэтому, пожалуйста, объясните точно и ясно, что должен делать код и где он идет не так.