Melhor resposta
Aqui você limpará mais com Cin
Usando , cin.get , cin.getline e cin. ignore
Usando o operador >> (com cin)
O> O operador> pode ser usado quando você simplesmente deseja ler os próximos caracteres não-espaços em branco inseridos pelo usuário em um caractere ou matriz de caracteres. Quaisquer caracteres imprimíveis após o primeiro espaço serão ignorados e não serão armazenados na variável. Não use uma instrução como
cin >> UserExplanation;
se, por exemplo, você deseja para obter uma frase inteira do usuário que inclui espaços. Nesse caso, você seria melhor servido usando as funções de membro cin get ou getline .
Pergunta : Um terminador nulo será armazenado automaticamente no final da matriz de caracteres, UserExplanation?
Usando cin.get
A função de membro get não formatada funciona como o operador >> com duas exceções. Primeiro, a função get inclui caracteres de espaço em branco , enquanto o extrator exclui o espaço em branco quando o sinalizador ios :: skipws é definido (o padrão). Em segundo lugar, a função get tem menos probabilidade de causar o esvaziamento de um fluxo de saída vinculado (cout, por exemplo).
Uma variação da função get especifica um endereço de buffer e o número máximo de caracteres a serem lidos. Isso é útil para limitar o número de caracteres enviados para uma variável específica, como mostra este exemplo:
#include
void main()
{
char line[25];
cout << " Type a line terminated by carriage return\n>";
cin.get( line, 25 );
cout << " " << line;
}
Neste exemplo, você pode digitar até 24 caracteres e um caractere de terminação. Quaisquer caracteres restantes podem ser extraídos posteriormente.
Usando cin.getline
A função de membro getline é semelhante ao obter função. Ambas as funções permitem um terceiro argumento que especifica o caractere de terminação para entrada. O valor padrão é o caractere de nova linha. Ambas as funções reservam um caractere para o caractere de terminação necessário . No entanto, get deixa o caractere de terminação no stream e getline remove o caractere de terminação.
O exemplo a seguir especifica um caractere de terminação para a entrada stream:
#include
void main()
{
char line[100];
cout << " Type a line terminated by "t"" << endl;
cin.getline( line, 100, "t" );
cout << line;
}
Usando cin.ignore
cin.ignore (int nCount = 1, int delim = EOF);
Parâmetros
nCount - O número máximo de caracteres a serem extraídos. delim - O caractere delimitador (o padrão é EOF).
Observações
Extrai e descarta até nCount caracteres. A extração para se o delimitador delim for extraído ou o final do arquivo for atingido. Se delim = EOF (o padrão), apenas a condição de fim de arquivo causa o encerramento. O caractere delimitador é extraído.
Resposta
cin.ignore () é uma função predefinida que ignora / limpa um ou mais caracteres do buffer de entrada.
Pré-requisitos: 1. O cin trata um espaço em branco, ou seja, " ", " \ t ", " \ n " como caractere delimitador.
2. Quando você lê qualquer coisa do dispositivo de entrada padrão, teclado aqui, primeiro vai para o buffer de entrada. O buffer de entrada é um local que contém todas as informações de entrada antes dele continua para a CPU para processamento.
O problema: 1. Suponha que você queira ler uma "string" do usuário. char meunome [10];
2. De alguma forma, você acaba usando cin, em vez de cin.getline () cin >> meunome;
3. Digito "ABC" e pressiono a tecla Enter. ele pega ABC e trata o seguinte "\ n" como delimitador.Como resultado, "\ n" não é lido e permanece no buffer de entrada.
4. Então aqui, cin.ignore () irá ignorar esses caracteres não lidos que permaneceram no buffer de entrada.
A solução: Se você quiser evite situações, lembre-se de não usar cin para inserir strings. e tada, problema resolvido !!