1
resposta

[Sugestão] Entender o buffer é fundamental

Funções de entrada usam buffer e o modo como elas manipulam o buffer pode trazer alguns transtornos quando precisamos ler mais de uma entrada. A maioria das funções de entrada deixam resquício no buffer, ou seja, extraem o conteúdo e deixam o ENTER no final do buffer.

Então a próxima função de entrada percebendo que já existe o caracter ENTER aceita imediatamente este buffer vazio como entrada, ou seja, como o usuário já estivesse apertado ENTER sem digitar nada.

Solução Use a função cin.ignore() logo após o uso de uma função de entrada. Ela irá limpar esse ENTER ('\n') que ficou no buffer e a próxima instrução de entrada irá funcionar normalmente.

Nota No Visual Studio, use std::cin.ignore()

1 resposta

Pois é, o C++ tem uma péssima forma de lidar com o cin, dando problemas também com o recebimento de sinais (como o control + D) durante a espera de um cin, e essas coisas me parecem muito importantes para serem deixadas de lado no curso. As streams no geral, tanto cin quanto cout mereciam uma atenção especial ou talvez até um curso só sobre eles, para garantir que os alunos estarão aptos a criarem ferramentas que realmente sejam úteis e funcionem com qualquer tipo de usuário (não só repetindo atividades simples de vídeos)