【发布时间】:2012-11-16 13:36:54
【问题描述】:
我有一个包含以下数据的 txt 文件:
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();
}
【问题讨论】:
-
前段时间我在一个有点类似的问题上发布了answer。看起来同样的基本想法在这里也适用。如果您真的不想明确阅读逗号和方括号,您可以创建一个将它们视为空格的语言环境。 An example 用斜线和破折号来做到这一点。
-
您之前来过这里并且刚刚注册了一个新帐户吗?这个问题看起来非常类似于不久前提出的string of questions...
-
我看了看那个用户,他似乎和我做同样的事情(可能是我的同学),但我可以向你保证我们是两个不同的人