У меня есть текстовый файл со следующими данными:
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();
}
Чтобы усложнить вашу жизнь, я предлагаю следующее:
Point2D
пример.Point2D
будет иметь метод для анализа «[3,2]» и присвоить 3Простота. Пусть объекты читают в своих собственных данных.
Других решений пока нет …