Ir ao conteúdo
  • Cadastre-se
nanquinote

String e getline c++

Recommended Posts

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>
#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=, i;
	bool status;
						//PROBLEMA AQUI
	for(i=; 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;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBS: notei que eu esqueci do #include <string>

 

Mas já coloquei aqui e continua o mesmo erro

 

Também notei o problema na inicialização do last, mas isso foi só quando eu colei o codigo, na ide tá normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, achei a resposta

"//Quando vai ler uma string, ou vetor de char, depois de uma leitura numérica, TEM QUE LIMPAR O BUFFER porque a tecla entre do númeu digitado ficou no teclado"

 

o código ficou:

cout << "\nNome do exercicio: "; cin.ignore(); getline(cin, aux.nome);

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×