如何在 c++ 中从文件中读取坐标

How to read coordinates from file in c++

本文关键字:文件 读取 坐标 c++      更新时间:2023-10-16

我有一个包含机器人坐标的文件,其中包含机器人的X,Y和旋转度。

0.2 0.3 150
1.7 3.2 -30
.....
8.7 5.2 -120

我还有一个文件,其中包含来自机器人传感器的不同读数,看起来像

1.5 1.4 1.0. 1.5
4.5 3.4 8.3. 1.1
....
3.5 7.3 1.2. 12.5

首先,我读取机器人的坐标,然后读取其传感器值并进行一些计算。为机器人姿势创建一个类来保留变量有什么意义吗?

double x,y; int degrees;

因为只制作一个双精度数组[linesInFile][3]更容易,它将所有值保留为双精度类型,以创建位置类和创建位置对象数组。如果我不知道文件中有多少个坐标并且直到我读取整个文件才知道数组的大小,那么创建该数组的最佳方法是什么?可以添加 dynamicalt 还是应该先读取文件中有多少行,然后再创建新数组?

使用存储在 std::vector 中的结构。

   struct Coord {
     double x;
     double y;
     double deg;
   };
   std::vector<Coord> myCoords;

现在您可以使用push_back添加元素。 std::vector 将为您处理内存管理。

是的,您可以创建一个类。

如果您事先不知道数组的大小,只需使用 std::vector ,并在从文件中读取其信息时将每个元素添加到向量中。

读取文件两次,一次确定行数,第二次为真实,就是这样......幸运的是,我们现在C++,有了std::vector,以及许多其他强大的类和模板,这使得完全没有必要经历这样的麻烦。

您可以使用std::cin和重载operator >>进行阅读。这取决于您的代码,但最简单的方法可能是创建一个包含必要变量的简单结构。

对于动态分配的数组,请使用 std::vector 。它是一个模板容器,将与您的结构一起使用。

struct Coo {
    double x,y;
    double deg;
}
std::vector< Coo > vec_cont;

如果您不想使其动态化,只需通读文件并记录行数即可。

动态,使用对象的向量。

struct Movement {
  double x,y;
  int degrees;
};

在类似的东西中使用它:

vector<Movement> myMovement;

然后,您可以将每行添加为移动对象。