У меня есть файл, который сначала сообщает мне, сколько точек я буду читать в следующей строке. Так, например, мой файл выглядит так:
7
a,b c,d e,f g,h, i,j k,l m,n
Итак, я знаю, что следующая строка после 7 - это 7 пар целых чисел, разделенных запятой, и каждая пара, разделенная пробелом.
Что я хочу: иметь вектор из 7-ти точечных элементов.
У меня есть класс с именем Point:
class Point {
public:
int x;
int y;
bool operator==(const Point q){
return (q.x == this->x && q.y == this->y);
}
};
Поэтому, когда я читаю этот файл, я хотел бы иметь вектор V, где:
V[0].x = a
V[0].y = b
V[1].x = c
V[1].y = d
и т. Д.
Я могу прочитать 7 штрафа, но как мне прочитать каждую из 7 пар целых чисел по отдельности? Мне это нужно, потому что я собираюсь хранить (a, b) (c, d) ... в векторе.
Это не только 2 балла. Первая строка файла сообщает мне, сколько очков я собираюсь сохранить.
Они не читаются со стандартного ввода.
Они читаются из файла.
Я пытался использовать sscanf, но я думаю, что это только для случаев, когда у вас есть несколько строк с этой информацией, и я бы не хотел изменять свой формат.
Это то, что я имею до сих пор:
void process_file(string filename){
ifstream thracklefile;
string line;
int set_size;
thracklefile.open(filename);
getline(thracklefile,line); //store set size.
set_size = stoi(line);
//Store points in following line
points.clear();
points.resize(set_size);
getline(thracklefile,line); //store the points.
}
Я не хочу игнорировать запятые, каждая запятая является частью информации, которую я хочу хранить для каждой точки.