Pulando ou ignorando getline()

 

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()

Comentários

Postagens mais visitadas deste blog

VR Box 2.0 - QR Code

Jogo 60 seconds!