Funciones istream de C++

Funciones Istream De C



El término 'flujo' en C++ describe el flujo de caracteres entre el hilo del programa y la E/S. Las clases de flujo de C++ son necesarias para ingresar y generar acciones en archivos y dispositivos IO. Estas clases están diseñadas para administrar la entrada y salida del programa y tienen una funcionalidad particular.

Jerarquía de clases de flujo

Una clase de C++ se compone de métodos necesarios para administrar y gobernar los datos que contiene.

float, doubles y classs son tipos de datos similares a int. Una variable única con una clase como tipo de datos se denomina objeto C++. Los objetos especiales preespecificados '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 hacia o desde programas en C++. Actualmente, estamos considerando las siguientes cuatro clases para este:



transmítelo
Este flujo de entrada puede servir para cualquier propósito. Una ilustración de un istream es cin.



Ostream
Es un flujo de salida con varios usos. Los Ostreams vienen en forma de cout y cin.





si corriente
Es un flujo de archivos de entrada.

de corriente
Es una secuencia de archivos de salida. La herencia es una noción que se utiliza mucho 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 antecesoras se convierten entonces en especializaciones de sí mismas mediante la inclusión de nuevas características.



Si la clase de flujo
Un ifstream se puede tratar de la misma manera que un istream, que es lo que es.

de clase de flujo
De la misma manera que funciona ifstreams, pero con salida en lugar de entrada, un ofstream es un flujo de archivo de salida. Un ofstream se usa de la misma manera que cout después de construirlo, abrirlo y verificar que no tenga errores.

clase de ios
De esta clase descendieron todas las clases de corriente. Los flujos de entrada y salida son dos tipos diferentes.

Define las partes de la transmisión 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 tratan en la base de ios, los miembros que dependen de los parámetros de la plantilla se describen en esta parte.

Corriente (entrada)
Debido a la complejidad de la biblioteca iostream, no podremos cubrirla por completo en estas lecciones. Sin embargo, destacaremos las funciones que más se utilizan. 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.

CORRIENTE

En el lenguaje de programación C++, el flujo de entrada es manejado por la clase istream. La entrada se lee y se entiende como una serie de caracteres que utilizan estos objetos de flujo de entrada. La entrada es manejada por el cin.

Clases de miembros

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

Funciones

istream::gcount
Proporciona 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, read, read some, putback y unget) alteran el valor devuelto por esta función. Sin embargo, tenga en cuenta que llamar a peeks, putback o unget no extrae ningún carácter. Como resultado, el conteo siempre devolverá 0.

istream::obtener
El carácter único saca un carácter de la secuencia. El carácter 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, sino que se mantiene como el siguiente carácter para recuperarlo de la secuencia si está presente.

istream::getline
Elimina caracteres de la secuencia como entrada sin formato y los guarda como una cadena C en la variable 's' hasta que el carácter extraído se convierte en el carácter delimitador o se escriben 'n' caracteres en 's'. Además, el método dejará de extraer caracteres si llega al 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 (asumiendo que todo está en orden) como si estuviera ejecutando uno de sus métodos miembro, 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 eliminado 'n' caracteres o uno se compare con el límite. Además, si se llega al 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 delim).

Antes de acceder a la secuencia de entrada, la función construye internamente un objeto centinela (con noskipws será verdadero). Finalmente, mata al objeto centinela antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (asumiendo que todo está en orden) como si estuviera ejecutando uno de sus métodos miembros: sbumpc o sgetc.

istream::operador>>
El operador de extracción (>>) aplica este operador a un flujo de entrada. Tiene demasiados miembros como función.

Tipo aritmético

Los caracteres se extraen del flujo 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 internamente un objeto centinela (noskipws será falso). Si todo sale bien, entonces ejecuta num get::get para completar los procesos de extracción y análisis mientras modifica los indicadores de estado interno de la transmisión. El objeto centinela finalmente se destruye antes de irse.

La función genera internamente un objeto centinela antes de leer la secuencia de entrada, se considera que realiza una entrada formateada. Finalmente, mata al objeto centinela antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (asumiendo que todo está en orden) como si estuviera ejecutando uno de sus métodos miembro, sbumpc o sgetc.

manipuladores

Se llama pf (*this), donde pf podría ser un manipulador. Los manipuladores son rutinas creadas especialmente 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::devolución
El carácter restaurado intenta mover el cursor hacia abajo un carácter en la secuencia para que el último carácter recuperado de la secuencia pueda extraerse nuevamente mediante operaciones de entrada.

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

istream::leer
Leer un bloque de datos:

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

Dentro de la función, primero se crea un objeto centinela antes de acceder a la secuencia de entrada. Finalmente, mata al objeto centinela antes de regresar, extrayendo caracteres de su objeto de búfer de flujo asociado (asumiendo que todo está en orden) como si estuviera ejecutando uno de sus métodos miembros: sbumpc o sgetc.

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

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

Dentro de la función, primero se crea un objeto centinela antes de acceder a la secuencia de entrada. Luego (si tiene éxito), llama a la función miembro en el recurso del objeto de búfer de flujo para determinar cuántos caracteres están disponibles ahora antes de llamar a 'sbumpc' para extraer hasta esa cantidad de caracteres (o sgetc). El objeto centinela finalmente se destruye antes de irse.

istream::buscar
La posición en la línea de entrada determina dónde se extraerá el siguiente carácter del flujo de entrada. Antes de leer la secuencia de entrada, la función construye internamente un objeto centinela. Luego (si está bien), realiza una de dos llamadas al objeto de búfer de flujo correspondiente: pubseekpos (1) o pubseekoff (2), (si corresponde). Finalmente, borra el elemento centinela y se marcha.

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

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

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

Da la posición del carácter 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 finalmente se destruye antes de irse.

istream::unget
Eliminar personaje:

Intenta mover el cursor un carácter hacia abajo en la secuencia para que el último carácter recuperado de la secuencia pueda extraerse nuevamente 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 un flujo de entrada.

Un carácter: la secuencia de caracteres toma el siguiente carácter 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 extraen caracteres (ancho ()-1).

Extracción de rvalue: permite extraer de rvalue objetos istream, lo que tiene el mismo resultado que extraer de lvalues: llama a is>>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 espacio de nombres estándar ;
En t principal ( )
{
    En t no ;
    cout << 'Por favor, introduzca un número ' ;
    comiendo >> no ;
    cout << 'El valor ingresado es: ' << no << ' \norte ' ;
}

Incluiríamos el archivo de cabecera . A continuación, usaremos el espacio de nombres 'std' en el espacio de nombres estándar. Llamaríamos a la función main(). Dentro de este método se declarará una variable denominada “no”. El tipo de datos 'int' se representa para esta variable. El término 'int' es la abreviatura de un número 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, se habría utilizado la declaración 'cin'. Este comando requiere que el usuario indique el valor. El número ingresado por el usuario se guardaría en una variable. El valor proporcionado por el usuario se mostraría en la pantalla usando 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 espacio de nombres estándar ;

En t principal ( )

{

    carbonizarse nombre [ 125 ] ;
    cout << 'Introduzca su nombre' << final ;


    comiendo >> ws ;

    comiendo . obtener línea ( nombre, 125 ) ;

    cout << nombre << final ;

    devolver 0 ;

}

Incorporaríamos el archivo de cabecera . A continuación, utilizaremos el espacio de nombres estándar como 'std'. Invocaríamos la función main(). Dentro de este método, declararemos una variable. Esta variable contiene el tipo de datos 'char'. Entonces se emplea la declaración '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 terminar el código, se utilizará el comando 'return 0'.

Conclusión

Primero, hablamos sobre qué son las funciones istream de C++. Luego observamos varias funciones y definiciones importantes mencionadas. En este artículo, hemos ejecutado diferentes códigos que contienen una variedad de funciones de istream. En el primer código, tomamos cualquier número del usuario y mostramos ese número en la pantalla. En la segunda, el usuario ingresaba el nombre y lo imprimía en la pantalla.