Forzar la estructura de C ++ para empacar apretadamente

Estoy intentando leer en un archivo binario. El problema es que el creador del archivo no tardó en alinear correctamente las estructuras de datos con sus límites naturales y todo está apretado. Esto dificulta la lectura de los datos utilizando las estructuras C ++.

¿Hay una manera de forzar unstruct para ser embalado apretado?

Ejemplo:

struct {
    short a;
    int b;
}

La estructura anterior es de 8 bytes: 2 parashort a, 2 para relleno, 4 paraint b. Sin embargo, en el disco, los datos son solo de 6 bytes (no tienen los 2 bytes de relleno para la alineación)

Tenga en cuenta que las estructuras de datos reales son miles de bytes y muchos campos, incluido un par de matrices, por lo que preferiría no leer cada campo individualmente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta