2016-03-03 3 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++, 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; 

, то вы можете добавить каждую строку как объект движения.

Смежные вопросы