O método ignore é utilizado para descartar caracteres do buffer de entrada. Usado para limpar
"\n" do buffer deixado quando Enter é pressionada em uma entrada de dados anterior.
Sintaxe
cin.ignore(count, delimiter);
Onde
count: quantos caracteres descartar
delimiter: caracter usado para parar descarte
Exemplo 17: sem ignore
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cout << "digite um número:";
cin >> num; // Enter adicionar '\n' no buffer
string texto;
cout << "digite um texto:";
getline(cin, texto);
cout << "Num: " << num << ", Texto: " << texto << endl;
return 0;
}
Entrada
10
Saída
digite um numero:10
digite um texto:Num: 10, Texto:
Como pode ser observado, sem o uso de ignore, o buffer ficou preenchido com uma quebra
de linha que foi capturada pela função getline como entrada, fazendo com que a
entrada do texto fosse interrompida abruptamente.
Exemplo 18: com ignore
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cout << "digite um número:";
cin >> num; // Enter adicionar '\n' no buffer
//'limpar' buffer
cin.ignore(1, '\n'); //
string texto;
cout << "digite um texto:";
getline(cin, texto);
cout << "Num: " << num << ", Texto: " << texto << endl;
return 0;
}
Entrada
10
Saída
digite um numero:10
digite um texto:teste
Num: 10, Texto: teste