C++ 使用多个分隔符存储输入文件
C++ Store input file with multiple delimiter
>我有一个包含以下数据的 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();
}
为了使你的生活复杂化,我建议如下:
- 创建一个
- 在文本中读取并创建一个对象的工厂对象基于文本。例如,当读取"Point2D"时,它会创建一个
Point2D
实例。 - 在每个类中创建方法以读取自己的数据。例如
Point2D
将有一个方法来解析"[3,2]"并将 3 分配给第一个纵坐标和 2 到第二个纵坐标。 - 在工厂中,让对象读取行的其余部分并分配其成员来自文本行。
- 如果您使用"load "从公共父对象创建所有对象from file"方法,你可以让工厂调用该方法使用指向父级的"泛型"指针。
单纯。 让对象读取自己的数据。
相关文章:
- 如何从用户那里获取输入并将其存储在向量中?
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 如何存储未知次数迭代的输入?
- 创建一个数组,以允许用户输入存储并稍后在代码中使用
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 如何在数组和向量 c++ 中存储和保存输入
- 在C++中存储要输入的标签列表
- 将标准输入中的双精度存储在矢量中
- 输入日,月,年并存储在单独的结构中
- 如何将用户输入存储在数组中?
- 如果我在 C++ 中为 int 提供双精度,输入缓冲区中存储了什么?
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 如何用索引命名一个变量来存储输入 mxArray?
- 如何从输入文件中读取字符并将其存储到向量中?
- 如何将控制台的输入存储到 wchar_t 变量?
- 如何存储多个用户输入,然后以C++显示它们
- C++ ->尝试逐字阅读一行文本。如何使指针等效于用于存储输入的当前二维数组
- C++ 使用多个分隔符存储输入文件
- C++存储输入行