2016-03-03 196 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; 

那麼您可以將每個行運動的對象。