Прежде всего, обратите внимание, что файлы представлены в виде потоков.
Поток - это просто то, из чего вы можете читать.Поэтому вам нужно написать потоковые операторы для ваших структур, чтобы их можно было прочитать.
std::ifstream file("Data"); // This represents a file as a stream
std::cin // This is a stream object that represents
// standard input (usually the keyboard)
Они оба наследуются от std::istream
.Таким образом, они оба действуют одинаково при передаче функциям, использующим потоки.
int value;
std::cin >> value; // The >> operator reads from a stream into a value.
Сначала напишите структуру, чтобы она знала, как читать себя из потока.
struct Coordinates
{
double x;
double y;
double z;
// This is an input function that knows how to read 3
// numbers from the input stream into the object.
friend std::istream& operator>>(std::istream& str, Coordinates& data)
{
return str >> data.x >> data.y >> data.z;
}
}
Теперь напишите несколькокод, который читает объекты типа Coordinate.
int main()
{
// Even if you only have a/b/c using a map to represent these
// values is better than having three different vectors
// as you can programmatically refer to the different vectors
std::map<char, std::vector<Coordinates>> allVectors;
char type;
Coordinates value;
// Read from the stream in a loop.
// Read the type (a/b/c)
// Read a value (type Coordinates)
while(std::cin >> type >> value)
{
// If both reads worked then
// select the vector you want and add the value to it.
allVectors[type].push_back(value);
}
}