Дан текстовый файл:
1:1:6
2:0
3:2:1:4
4:0
5:2:2:3
6:0
как правильно считать его в двумерный вектор интов
задан список смежности графа, 1 столбец - вершины графа, 2 - количество его смежных вершин, 3 - смежные вершины я пытался считать через два цикла for,считывал в char и проверял на двоеточие. Если двоеточие, переходил на следующий шаг цикла, иначе записывал в вектор g[i].push_back(char - '0').Проблема в том, что у меня не получилось записывать строки таких размеров, как в примере.
Для начала вам нужна функция, которая считывает строку и превращает её в вектор интов:
#include <iostream>
#include <vector>
#include <sstream>
#include <string>
std::vector<int> read(std::istream &is){
std::vector<int> data;
std::string line;
getline(is, line);
std::stringstream sstream(line);
while(sstream){
int i;
sstream >> i;
sstream.ignore(1);
data.push_back(i);
}
return data;
}
Я для того, чтобы разбить строку на числа, использовал std::stringstream. К сожалению у std::string до сих пор нет метода split. Вы можете воспользоваться любым удобным для вас способом.
Теперь нужно просто вызывать полученную функцию до конца файла:
int main()
{
std::vector<std::vector<int> > data;
//Вот тут вместо cin нужно сделать открытие файла.
//Что-то вроде std::ifstream stream("Имя_Файла");
std::istream &stream = std::cin;
while(stream){
data.push_back(read(std::cin));
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей