Iterações e getline

Olá… Estou construindo uma algoritmo que faz algumas operações com uma lista, mas a minha dúvida é sobre a leitura de strings. Já tive problema com isso antes e aprendi a usar o getline… O problema do código abaixo é que: ele funciona ok na 1o iteração do for, mas a partir da segunda ele pula a leitura da primeira variável (string) que está usando o getline… não sei o que faço.

#include <iostream>
#include <string>
#define MAX_LIST 5
using namespace std;

struct EXERCICIO{
	string nome;
	int serie;
	int repeticoes;
	float peso;	
}aux;

bool insere(EXERCICIO serie[], string n, int s, int r, float p, int &last);

int main(){
	
	EXERCICIO serieA[MAX_LIST];
	int last=0;
	int i;
	bool status;
						//PROBLEMA AQUI
	for(i=0; i<MAX_LIST; i++){
		cout << "\t\tINSERCAO DE EXERCICIOS DA SERIE A: ";
		cout << "\n\tEXERCICIO " << i+1;
		cout << "\nNome do exercicio: "; getline(cin, aux.nome);
		cout << "\nQt. de Series: "; cin >> aux.serie;
		cout << "\nRepeticoes: "; cin >> aux.repeticoes;
		cout << "\nPeso: "; cin >> aux.peso;
		cout << "\n\n";
		status = insere(serieA, aux.nome, aux.serie, aux.repeticoes, aux.peso, last);
		if(status == true){
			cout << "\nInsercao realizada com sucesso" << endl;
		}
		system("cls");		
	}	
}

bool insere(EXERCICIO serie[], string n, int s, int r, float p, int &last){
	if(last == MAX_LIST){
		cout << "\nLista cheia." << endl;
		return false;
	}else{
		serie[last].nome = n;
		serie[last].serie = s;
		serie[last].repeticoes = r;
		serie[last].peso = p;
		
		last++;
	}
	return true;
}

Consegui resolver…

O problema é que precisa limpar o buffer depois de uma leitura numérica

daí é só por o cin.ignore antes do getline()