C++: Usando o cin.ignore()

Suponha que iremos construir um algoritmo para calcular a nota final dos alunos da faculdade. Em algum momento, no cadastro dos alunos, iremos pedir que digitem a matrícula (número inteiro) e o nome completo do aluno (strings). Para ler tais campos, podemos usar respectivamente os comandos “cin” e “getline()”.

cin >> matricula;
getline(cin, nome);

Digamos que o usuário digite a matrícula “1234”, ao pressionar a tecla enter para enviar, a variável “matricula”, irá receber o valor “1234”, mas no buffer, também teremos o caracter de quebra de linha ‘\n’ armazenado (que foi inserido no momento em que o usuário pressionou enter). Como a função getline(), que vem em seguida, lê uma cadeia de caracteres até achar um ‘\n’, a primeira coisa que ela irá achar no buffer é um ‘\n’, entendendo que já achou o fim da linha, e encerra a leitura, ou seja, não será nem solicitado ao usuário, que ele digite alguma coisa.

Para resolver este problema, devemos usar a função ignore() do cin para limpar o ‘\n’do buffer. O código ficará da seguinte maneira:

cin >> matricula;
cin.ignore();
getline(cin, nome);

Até o próximo post.

Créditos:

Lucas Mucida
Mestre em Ciência da Computação pela UFV.
Atua como desenvolvedor C# – ASP.Net e SQL Server.
Atua também como professor, lecionando Banco de Dados, Algoritmo e Estrutura de Dados e Programação C++

Claudeci Goularte

Programador com mais de 11 anos de experiência, graduado em Análise e Desenvolvimento de Sistemas, e pós graduado em MBA em Arquitetura de Software. Sou Sócio fundador e administrador na empresa Kamoney Empreendimentos Digitais Ltda.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *