¿Qué es cin.ignore () y para qué sirve?


Mejor respuesta

Aquí aclararás más con Cin

Usando , cin.get , cin.getline y cin. ignorar

Usando el operador >> (con cin)

El> > El operador se puede usar cuando simplemente desea leer los siguientes caracteres que no sean espacios en blanco ingresados ​​por el usuario en un carácter o matriz de caracteres. Cualquier carácter imprimible que siga al primer espacio se ignorará y no se almacenará en la variable. use una declaración como,

cin >> UserExplanation;

si, por ejemplo, desea para obtener una oración completa del usuario que incluya espacios. En ese caso, sería mejor utilizar las funciones miembro cin get o getline . .

Pregunta : ¿Se almacenará automáticamente un terminador nulo al final de la matriz de caracteres, UserExplanation?

Usando cin.get

La función get member sin formato funciona como el operador >> con dos excepciones. Primero, la función get incluye caracteres de espacio en blanco , mientras que el extractor excluye los espacios en blanco cuando se establece la marca ios :: skipws (el valor predeterminado). En segundo lugar, es menos probable que la función get provoque la eliminación de un flujo de salida vinculado (cout, por ejemplo).

Una variación de la función get especifica una dirección de búfer y el número máximo de caracteres a leer. Esto es útil para limitar el número de caracteres enviados a una variable específica, como muestra este ejemplo:

#include

void main()

{

char line[25];

cout << " Type a line terminated by carriage return\n>";

cin.get( line, 25 );

cout << " " << line;

}

En este ejemplo, puede escribir hasta 24 caracteres y un carácter final. Los caracteres restantes se pueden extraer más tarde.

Usando cin.getline

La función del miembro getline es similar a la obtener función. Ambas funciones permiten un tercer argumento que especifica el carácter de terminación para la entrada. El valor predeterminado es el carácter de nueva línea. Ambas funciones reservan un carácter para el carácter final requerido . Sin embargo, get deja el carácter de terminación en la secuencia y getline elimina el carácter de terminación.

El siguiente ejemplo especifica un carácter de terminación para la entrada flujo:

#include

void main()

{

char line[100];

cout << " Type a line terminated by "t"" << endl;

cin.getline( line, 100, "t" );

cout << line;

}

Uso de cin.ignore

cin.ignore (int nCount = 1, int delim = EOF); ​​

Parámetros

nCount: el número máximo de caracteres para extraer. delim: el carácter delimitador (predeterminado en EOF).

Comentarios

Extrae y descarta hasta nCount caracteres. La extracción se detiene si se extrae el delimitador o se llega al final del archivo. Si delim = EOF (el valor predeterminado), solo la condición de fin de archivo provoca la terminación. Se extrae el carácter delimitador.

Respuesta

cin.ignore () es una función predefinida que ignora / borra uno o más caracteres del búfer de entrada.

Requisitos previos: 1. La cin trata un espacio en blanco, es decir, " ", " \ t ", " \ n " como carácter delimitador.

2. Cuando lees algo del dispositivo de entrada estándar, el teclado aquí, primero va al búfer de entrada. El búfer de entrada es una ubicación que contiene toda la información entrante antes continúa a la CPU para su procesamiento.

El problema: 1. Suponga que desea leer una "cadena" del usuario. char myname [10];

2. De alguna manera terminas usando cin, en lugar de cin.getline () cin >> myname;

3. Escribo "ABC", y luego presiono la tecla Enter. toma ABC y trata el siguiente "\ n" como delimitador.Como resultado, "\ n" no se lee y permanece en el búfer de entrada .

4. Así que aquí, cin.ignore () ignorará estos caracteres no leídos que quedaron en el búfer de entrada.

La solución: Si desea evite situaciones, solo tenga en cuenta no usar cin para ingresar cadenas. y tada, problema resuelto !!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *