C++中如何从文件中读取坐标

How to read coordinates from file in c++

我有一个包含机器人坐标的文件,其中包含机器人的 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

首先我读取机器人的坐标,然后读取其传感器值并进行一些计算。是否有必要为机器人姿势创建一个 class 以保持变量?

double x,y; int degrees;

因为只创建一个 double[linesInFile][3] 数组会更容易将所有值保持为 double 类型,从而创建 class 位置和创建位置对象数组。 如果我不知道文件中有多少坐标并且在读取整个文件之前我不知道数组的大小,那么创建该数组的最佳方法是什么?它们可以被添加 dynamicalt 还是我应该先读取文件中有多少行然后创建新数组?

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

   struct Coord {
     double x;
     double y;
     double deg;
   };

   std::vector<Coord> myCoords;

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

是的,您可以创建 class。

如果您事先不知道数组的大小,只需使用 std::vector,然后将每个元素添加到向量中,就像您从文件中读取它的信息一样。

两次读取文件,一次是确定行数,第二次是真正的,是这样的……上个世纪,那时我们只有 C。幸运的是,我们现在有了 C++,有了 std::vector,以及许多其他强大的 classes 和模板,完全没有必要经历这样的麻烦。

您可以使用 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;

然后你可以将每一行添加为一个对象。