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