Дан текстовый файл:
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));
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно увеличить высоту строк в многострочном тексте QLabelНо, не нашел решения с QFont и QStyleSheets
Пишу курсовую работуНужно зделать виртуальную лабораторную работу на тему "Електромагнитная индукция"