C ++ Игнорировать определенные строки при чтении файла

В настоящее время я пытаюсь сделать Проблема Клики и столкнулся с проблемой. Я читаю график из файла, но файл соответствует определенному формату:

c   File  p_hat1500-1.clq
c
c
p edge  1500    284923
e 4 1
e 5 3
e 5 4
e 6 2

Перед каждой строкой стоит буква, обозначающая, что находится в этой строке (будь то комментарий (с) или ребро (е)), я пытаюсь выяснить, как я могу прочитать файл и игнорировать все элементы, кроме ребра цифры, чтобы вместо этого читалось так:

4 1
5 3
5 4
6 2

Пока что я просто читаю файл так:

ifstream file("graph.clq");

и загрузка

file >> n;

0

Решение

Попробуй это

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

using std::cout;
using std::endl;
using std::cerr;
using std::vector;
using std::string;

vector<std::pair<int, int>> read_graph_file(const string& file);

int main() {

auto edges = read_graph_file("input.txt");
for (auto edge : edges) {
cout << edge.first << " " << edge.second << endl;
}

return 0;
}vector<std::pair<int, int>> read_graph_file(const string& file) {
auto fin = std::ifstream{file.c_str()};
if (!fin) {
throw std::runtime_error{"Could not open file"};
}

auto edges = vector<std::pair<int, int>>{};

auto input_type = char{};
while (fin >> input_type) {
if (input_type != 'e') {
while (fin.get() != '\n') {}
} else {
auto edge = std::pair<int, int>{};
fin >> edge.first >> edge.second;
edges.push_back(edge);
}
}

return edges;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru