ptitca_zu
@ptitca_zu
Programmer. Reader. Introvert

Как записать данные из файла в массив структур?

Здравствуйте!

Есть файл со строками вида:
int1,string1,int2

Есть структура:

struct struct_name {
        int int1;
        string string1;
        int int2;
    };


И есть массив таких структур:
vector<struct_name>vector_name

Нужно записать в элементы массива структуры с соответствующими переменными.

То есть в vector_name[0] должна храниться структура с переменными из первой строки файла.

С Си++ маловато опыта (почти нет), не могу понять, как правильно это сделать.
  • Вопрос задан
  • 8121 просмотр
Пригласить эксперта
Ответы на вопрос 1
nekipelov
@nekipelov
Если бы string1 был представлен как char string1[123], то структура struct_name являлась POD типом. В этом случае можно было бы читать так:

vector<struct_name> vector_name;
FILE *fp = fopen(...);
size_t size = ...

vector_name.resize(size);
fread(&vector_name[0], sizeof(struct_name), size, fp);


Но т.к. struct_name не является POD, придется реализовывать чтение поэлементно. Или же воспользоваться чем-нибудь вроде boost.serialization:

struct struct_name {
    int int1;
    string string1;
    int int2;

    template<class Archive>
    void save(Archive & ar) const
    {
        ar  & int1;
        ar  & string1;
        ar  & int2;
    }
    template<class Archive>
    void load(Archive & ar)
    {
        ar & int1;
        ar & string1;
        ar & int2;
    }
};
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы