O que é cin.ignore () e para que serve?


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 !!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *