C++ нужна помощь с файлом и массивами

Предположим, что у меня есть файл с введёнными в него пользователем данными

85.190.148.121:27015
85.190.148.115:27015
85.190.148.121:27016
85.190.148.122:27015
85.190.148.126:27015
85.190.148.122:27017
85.190.148.116:27015
85.190.148.117:27017
85.190.148.120:27016
85.190.148.117:27016
85.190.148.126:27016
85.190.148.119:27016
85.190.148.120:27015
85.190.148.118:27016
85.190.148.123:27016

Мне нужна помощь с тем, что я хочу разделить айпи и порт на 2 разных массива, например чтобы вот в эти массивы list_ip = [], list_port = [] заносились данные, кол-во строк найти не сложно, а как отделить айпи и порт в разные массивы (в двумерный кстати тоже неплохо)? Я не прошу всё написать за меня, хотя-бы подсказку какую что-ли).


Ответы (1 шт):

Автор решения: Serj525

Вот мое решение. Вместо двух массивов использовал структру pair которую запихнул в вектор

#include<fstream>
#include<iostream>
#include<vector>
#include<cstdlib>
#include<string>

int main()
{
    using ip_port = std::pair<std::string, std::string>;
    std::ifstream fin;
    std::vector<ip_port>ip_addrs;

    fin.open("C:/Users/User/Desktop/ip_addrs.txt",std::ios_base::in);
    if (!fin.is_open())
    {
        std::cout << "Could not open file!" << std::endl;
        std::exit(EXIT_FAILURE);
    }

    while (!fin.eof())
    {
        ip_port temp;
        std::getline(fin, temp.first, ':');
        std::getline(fin, temp.second, '\n');

        ip_addrs.push_back(temp);
    }

    for (auto const& ipInfo : ip_addrs)
        std::cout << ipInfo.first << ":" << ipInfo.second << std::endl;

    return 0;
}
→ Ссылка