Файл ввода / вывода C ++ - PullRequest
0 голосов
/ 26 мая 2018

Я хочу прочитать файл следующего: Где строки, начинающиеся с c, обозначают комментарии, p обозначает информацию о графике (без узлов, без ребер) и e обозначает ребра.

c   //Comments
c   //Comments
c   //Comments
p edge  50  654
e 4 1
e 5 3
e 5 4
e 6 2
e 6 3
... // 654 edges

Моя идея о том, как это будет работать, такова:

  1. читать строку за строкой, пока первый индекс строки == 'p';
  2. не инициализирует мою матрицук размеру узлов, который был бы здесь 50.
  3. read amount_of_edges -количество строк, сохраняя их в моей структуре данных (в примере это будет 654 строки).

Я знаю, как это можно сделать просто вPython, однако я просто не знаю, с чего начать с C ++.

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете попробовать сделать это так:

ifstream file("myfile.txt");
string line;
while(true){
    getline(file, line);
    if(line[0]=='p') break;
 }
//now line contains a line starting with 'p' which contains the numbers
//that you need
stringstream data_from_line_with_p;
data_from_line_with_p << line;
//we have send the line to a stream, from which we can read to the variables
string p, edges;
int size_of_nodes, amount_of_edges;
//let's now assign these variables with data from the stream:
data_from_line_with_p >> p >> edges >> size_of_nodes >> amount_of_edges;

//now size_of_nodes and _amount_of_edges store the values read from this
//line and you can use them to build the structure that you want
//You also store here the word after 'p' in the variable 'edge' and you 
//can use it also if you need.

Не забудьте добавить заголовок для использования stringstreams: #include<sstream>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...