Funciones de C ++ Istream

Funciones de C ++ Istream
El término "transmisión" en C ++ describe el flujo de caracteres entre el hilo del programa y la E/S. Se necesitan clases de transmisión C ++ para ingresar y emitir acciones en dispositivos y archivos IO. Estas clases están diseñadas para administrar la entrada y la salida del programa y tienen una funcionalidad particular.

Jerarquía de clase de transmisión

Una clase C ++ está compuesta por métodos necesarios para administrar y gobernar los datos que contiene.

flotador, dobles y clases son tipos de datos similares a int. Una variable única con una clase como su tipo de datos se conoce como objeto C ++. Los objetos especiales especificados 'Cin' y 'Cout' tienen varias clases como tipos de datos.

Los datos escritos en 'Cout' o leídos de 'Cin' son ejemplos de flujos de datos dentro o fuera de los programas en C++. Actualmente, estamos considerando las siguientes cuatro clases para esta:

Istream
Cualquier propósito puede ser atendido por este flujo de entrada. Una ilustración de un Istream es Cin.

Ostra
Es una transmisión de salida con varios usos. Los ostres vienen en forma de Cout y Cin.

Si la transmisión
Es una secuencia de archivos de entrada.

De corriente
Es un flujo de archivos de salida. La herencia es una noción muy utilizada en la programación orientada a objetos, como en C ++, donde algunas clases adquieren las características de otras clases que ya se han creado. Las clases de antepasados ​​se convierten en especializaciones de sí mismas a través de la inclusión de nuevas características.

Si la clase de transmisión
Un ifstream puede tratarse de la misma manera que un istream, que es lo que es.

De clase de transmisión
De la misma manera que funciona IfStreams, pero con la salida en lugar de la entrada, un OfStream es una transmisión de archivo de salida. Un Ofstream se usa de la misma manera que Cout después de ser construido, abierto y verificado para no tener errores.

Clase de iOS
De esta clase, todas las clases de transmisión descendieron. Las secuencias de entrada y salida son dos tipos diferentes.

Define las partes de la corriente que son independientes del estado de entrada o salida de la transmisión en la base de iOS.

A diferencia de los miembros que se discuten en la base de iOS, los miembros que dependen de los parámetros de la plantilla se describen en esta parte.

Transmisión (entrada)
Debido a la complejidad de la biblioteca iostream, no podremos cubrirla por completo en estas lecciones. Sin embargo, destacaremos las funciones que se utilizan más. En esta sección, veremos la clase de entrada desde una variedad de ángulos (istream).

Hemos aprendido que el operador de extracción (>>) se utilizará para adquirir los datos de un flujo de entrada.

Istream

En el lenguaje de programación C ++, la transmisión de entrada es manejada por la clase Istream. La entrada se lee y se entiende como una serie de caracteres que usan estos objetos de flujo de entrada. La entrada es manejada por el CIN.

Clases de miembros

istream :: Sentry
Una clase que lleva a cabo muchas tareas y cada vez que se realiza un procedimiento de entrada. Su destructor no está obligado a llevar a cabo ninguna acción. Sin embargo, las implementaciones pueden ejecutar tareas de inicio o limpieza adicionales en la secuencia compartida por todas las operaciones de entrada utilizando la creación y destrucción de objetos centinela.

Funciones

istream :: gcount
Da el recuento de caracteres que se obtuvo de la acción de entrada sin formato más reciente del objeto. Los procedimientos de entrada sin formato- Get, GetLine, Ignore, Peek, Lean, lean algunos, retroceso y desanime el valor devuelto por esta función. Sin embargo, tenga en cuenta que llamar a Peeks, Putrosback o Unget no extrae ningún personaje. Como resultado, el recuento siempre devolverá 0.

istream :: Get
El personaje único saca un personaje de la corriente. El personaje se establece como el valor del argumento o se devuelve (primera firma) (segunda firma).

Cadena C: si el carácter delimitador está presente, no se elimina de la secuencia de entrada, en su lugar, se mantiene como el siguiente carácter que se recuperará de la corriente si está presente.

istream :: getline
Elimina los caracteres de la transmisión como entrada sin formato y los guarda como una cadena C en la variable "S" hasta que el personaje extraído se convierta en el personaje delimitante o los caracteres "n" se han escrito en 's' '. Además, el método dejará de extraer caracteres si alcanza el final del archivo.

Internamente, la función crea un objeto antes de acceder a la secuencia de entrada. Finalmente, mata el objeto antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (suponiendo que todo esté en orden) como si ejecutara uno de sus métodos miembros, SBUMPC o SGETC.

istream :: ignorar
Los caracteres se toman de la secuencia de entrada y se descartan uno a la vez hasta que se hayan sacado los caracteres "n" o se compare igual a la delimitación. Además, si se alcanza el final del archivo, la función detiene la extracción de caracteres. La función establece el indicador "EOFBIT" si llega a este punto demasiado pronto (antes de extraer n caracteres o descubrir delimitaciones).

Antes de acceder a la secuencia de entrada, la función construye un objeto centinela internamente (con noskipws será cierto). Finalmente, mata el objeto Sentry antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (suponiendo que todo esté en orden) como si ejecute uno de sus métodos miembros: SBUMPC o SGETC.

istream :: operador >>
El operador de extracción (>>) aplica este operador a una secuencia de entrada. Tiene demasiados miembros en función.

Tipo aritmético

Los caracteres se sacan de la corriente y se analizan secuencialmente para representar un valor del tipo correcto, que luego se guarda como el valor de "Val". Antes de acceder a la secuencia de entrada, la función construye un objeto centinela internamente (noskipws será falso). Si todo se verifica bien, luego ejecuta num get :: Completar los procesos de extracción y análisis mientras modifica las banderas de estado internos de la corriente. El objeto centinela se destruye en última instancia antes de que se vaya.

La función genera internamente un objeto centinela antes de leer la secuencia de entrada, se ve como una entrada formateada. Finalmente, mata el objeto Sentry antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (suponiendo que todo esté en orden) como si ejecute uno de sus métodos miembros, SBUMPC o SGETC.

Manipuladores

Se llama el PF (*esto), donde PF podría ser un manipulador. Los manipuladores son rutinas creadas particularmente para ser llamadas cuando se invoca este operador. La secuencia de entrada no se ve afectada por este procedimiento y no se extraen caracteres.

istream :: retroceso
El personaje restaurado intenta mover el cursor por un personaje en la transmisión para que el último personaje recuperado de la corriente pueda extraerse nuevamente mediante operaciones de entrada.

Antes de acceder a la secuencia de entrada, la función construye un objeto centinela internamente. Luego llama a SputBackc (c) en su objeto de búfer de flujo asociado (si es bueno). El objeto centinela se destruye en última instancia antes de que se vaya.

istream :: leer
Lea un bloque de datos:

Los personajes 'n' se toman de la transmisión y luego se almacenan en la matriz que "S" apunta a. Esta función simplemente replica un bloque de datos sin inspeccionar el contenido de los datos o agregar un carácter nulo al final.

Dentro de la función, se crea primero un objeto centinela antes de acceder a la secuencia de entrada. Finalmente, mata el objeto Sentry antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (suponiendo que todo esté en orden) como si ejecute uno de sus métodos miembros: SBUMPC o SGETC.

Llamar el recuento de miembros devolverá el número total de caracteres que esta función ha leído y almacenado correctamente.

istream :: Readsome
Esta función depende del funcionamiento interno del objeto de búfer de flujo específico vinculado a la secuencia, cuyo comportamiento está definido en gran medida para la implementación para las clases estándar.

Dentro de la función, se crea primero un objeto centinela antes de acceder a la secuencia de entrada. Entonces (si tiene éxito), llama a la función miembro en el objeto de búfer de transmisión disponible para determinar cuántos caracteres están ahora disponibles antes de llamar a "SBUMPC" para extraer hasta ese número de caracteres (o SGETC). El objeto centinela se destruye en última instancia antes de que se vaya.

istream :: Seekg
La posición en la línea de entrada determina dónde se extraerá el siguiente carácter de la secuencia de entrada. Antes de leer la secuencia de entrada, la función construye internamente un objeto centinela. Entonces (si está bien), hace una de las dos llamadas al objeto de búfer de transmisión correspondiente: Pubseekpos (1) o Pubseekoff (2), (si corresponde). Finalmente, borra el artículo Sentry y se va.

istream :: Sync
Alinee el búfer de entrada:

Lleva la secuencia de entrada controlada del búfer de flujo vinculado a Sync. La implementación específica del objeto de búfer de flujo conectado a la secuencia determina los detalles de la operación.

istream :: Tellg
Obtenga la posición de la secuencia de entrada:

Da la posición del personaje actual en el flujo de entrada. La función luego devuelve -1. Si el miembro falla, devuelve verdadero.

Devuelve rdbuf ()-> Pubseekoff si no (0, cur, in). El objeto centinela se destruye en última instancia antes de que se vaya.

istream :: unget
Eliminar el carácter:

Intenta mover el cursor por un personaje en la corriente para que el último personaje recuperado de la corriente pueda extraer una vez más mediante operaciones de entrada.

No es miembro

Operador >> (istream)
El operador de extracción (>>) proporciona entrada formateada con esta acción cuando se aplica a una secuencia de entrada.

Un personaje: la secuencia de personajes saca el siguiente personaje y lo almacena como el valor de "C". El proceso de extraer caracteres de IS y almacenarlos en S, como una cadena C, se detiene (si el ancho no es cero) cuando se encuentra un carácter de espacio en blanco o se han extraído caracteres (ancho () -1).

Extracción de rValue: habilita la extracción de los objetos de rValue istream, que tiene el mismo resultado que la extracción de los LVALUES: Llama es >> Val.

Ejemplo 1

En este caso, examinaríamos cómo podemos obtener cualquier valor del usuario y luego mostrarlo como resultado en la pantalla.

#incluir
usando el espacio de nombres STD;
int main ()

int no;
cout<<"Please enter a number ";
cin >> no;
cout<<"The entered value is: " << no << "\n";

Incluiríamos el archivo de encabezado. A continuación, usaremos el espacio de nombres 'STD' en el espacio de nombres estándar. Llamaríamos a la función main (). Se declarará una variable llamada "no" dentro de este método. El tipo de datos "int" está representado para esta variable. El término "int" es la abreviatura de un entero. Posteriormente, se utiliza la declaración 'Cout'. Este comando imprime la línea.

El usuario ingresará cualquier valor aleatorio después de que este texto se haya mostrado en la pantalla. Entonces, la declaración "Cin" se habría utilizado. Este comando requiere que el usuario indique el valor. El número ingresado del usuario se guardaría en una variable. El valor proporcionado por el usuario se mostraría en la pantalla utilizando el comando 'Cout'.

Ejemplo 2

En este caso, veríamos cómo obtenemos cualquier nombre del usuario y luego lo mostramos en la pantalla como resultado.

#incluir
usando el espacio de nombres STD;
int main ()

nombre de char [125];
cout << "Enter your name" << endl;
cin >> ws;
cinta.GetLine (nombre, 125);
cout << name << endl;
regresar 0;

Incorporaríamos el archivo de encabezado . A continuación, utilizaremos el espacio de nombres estándar como 'STD'. Invocaríamos la función principal (). Dentro de este método, declararemos una variable. Esta variable contiene el tipo de datos 'char'. Entonces se emplea la declaración de 'cout'. Este comando muestra el texto 'Ingrese su nombre' en la pantalla. Después de mostrar este texto en la pantalla, el usuario ingresaría cualquier nombre. Entonces, utilizaríamos la declaración 'Cin'.

Este comando toma el valor del usuario. El nombre proporcionado se almacenaría en una variable 'WS'. Aquí, una vez más, utilizaríamos el comando 'Cin'. Dentro de este comando, se aplica la función getLine (). Esta función contiene el parámetro que incluye el nombre ingresado por el usuario y la longitud del nombre. El comando 'cout' se utilizará para mostrar el nombre proporcionado por el usuario. Para finalizar el código, se utilizará el comando 'return 0'.

Conclusión

Primero, hablamos sobre las funciones de C ++ Istream. Luego observamos varias funciones y definiciones importantes mencionadas. En este artículo, hemos ejecutado diferentes códigos que contienen una variedad de funciones istream. En el primer código, tomamos cualquier número del usuario y mostramos ese número en la pantalla. En el segundo, el usuario ingresó el nombre e imprimió ese nombre en la pantalla.