2016-03-03 500 views
0

我有一个带机器人坐标的文件,其中包含机器人的X,Y和旋转度。如何从C++中的文件中读取坐标

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,或者我应该先阅读文件中有多少行,然后创建新的数组?

回答

1

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

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

    std::vector<Coord> myCoords; 

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

1

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

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

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

0

您可以使用std::cin和超载operator >>阅读。它取决于你的代码,但最简单的方法是创建一个包含必要变量的简单结构。对于动态分配的数组,请使用std::vector。它是一个模板容器,可以和你的结构一起工作。

struct Coo { 
    double x,y; 
    double deg; 
} 

std::vector<Coo> vec_cont; 
0

如果你不想让它变成动态的,只需通读文件并记录行数即可。

动态,使用对象的向量。在创建类的东西

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

使用它:

vector<Movement> myMovement; 

那么您可以将每个行运动的对象。