iostream — входной файл C ++ Store с несколькими разделителями

У меня есть текстовый файл со следующими данными:

Point2D, [3, 2]
Line3D, [7, 12, 3], [-9, 13, 68]
Point3D, [1, 3, 8]
Line2D, [5, 7], [3, 8]

Как мне на самом деле сохранить их, удалив несколько разделителей, чтобы я мог извлечь данные?

То, что я хочу, это прочитать в первой строке и игнорировать «,» «[» и «]», чтобы я мог хранить Point2D, 3 и 2 по отдельности. Затем я продолжаю и перехожу ко второй строке и так далее.

Также возможно ли это сделать, скажем, например:

Первая строка «Point2D, [3, 2]», когда Point2D обнаруживается, сохраняет 3 и 2 в point2d.x и point2d.y.

Для второй строки «Line3D, [7, 12, 3], [-9, 13, 68]» она будет сохранена в значения соответственно в line3d.x, line3d.y, line3d.z и т. Д.

Прямо сейчас я мог только заставить это игнорировать ‘,’. Это то, что я сделал до сих пор:

void readData()
{
string fileName;
int i=0;
cout << "Enter file name: ";
cin >> fileName;
fstream infile;

infile.open(fileName.data());
// This will count the number of lines in the textfile.
if (! infile.is_open())
{
cerr<<"Error : " << fileName.data() <<" is not found"<<endl;
}

string line;
stringstream field;
while (getline(infile,line))
{
string f;
field<<line;
while (getline(field,f,','))
{
recordA.push_back(f);
}
field.clear();
}
cout << recordA.size() << " records read in successfully!";
infile.close();

}

0

Решение

Чтобы усложнить вашу жизнь, я предлагаю следующее:

  1. Сделайте фабричный объект, который читает в тексте и создает объект
    на основе текста. Например, когда «Point2D» читается, он создает
    Point2D пример.
  2. Создайте методы в каждом классе, чтобы читать свои собственные данные. Например,
    Point2D будет иметь метод для анализа «[3,2]» и присвоить 3
    первая ордината и 2 ко второй ординате.
  3. На фабрике сделайте, чтобы объект прочитал остальную часть строки и назначил
    его члены из текстовой строки.
  4. Если вы делаете все объекты из общего родительского объекта с «нагрузкой
    из файла «метод, вы могли бы иметь фабрику вызывать метод
    используя «общий» указатель на родителя.

Простота. Пусть объекты читают в своих собственных данных.

0

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

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

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