Если бы 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;
}
};