logo

Entrada y salida básica de C++ (E/S)

La operación de E/S de C++ utiliza el concepto de flujo. La serie de bytes o flujo de datos se denomina flujo. Acelera el rendimiento.

Si los bytes se transfieren desde la memoria principal a un dispositivo como una impresora, una pantalla, una conexión de red, etc., esto se denomina operación de salida.

Una operación de entrada ocurre cuando los bytes fluyen desde un dispositivo como una impresora, una pantalla o una conexión de red a la memoria principal.

En C++, funciones predefinidas y las declaraciones se proporcionan a través de archivos de encabezado, lo que le permite realizar tareas específicas sin tener que escribir código nuevo desde el principio. Algunos archivos de encabezado importantes para operaciones de entrada/salida en C++ incluyen funciones para realizar tareas de entrada y salida de manera efectiva. La biblioteca estándar de C++, una colección de clases y métodos creados en el lenguaje de programación C++, contiene estos archivos de encabezado. Analicemos los principales archivos de encabezado para operaciones de entrada/salida:

Archivo de cabecera Función y descripción
Se utiliza para definir el cout, cin y cerr objetos, que corresponden al flujo de salida estándar, flujo de entrada estándar y flujo de error estándar, respectivamente.
Se utiliza para declarar servicios útiles para realizar E/S formateadas, como setprecision y setw.
Se utiliza para declarar servicios para el procesamiento de archivos controlados por el usuario.

iostream: Es uno de los archivos de encabezado más importantes para operaciones de entrada/salida en C++. Lo que representa 'de entrada y salida' arroyo. Para trabajar con diversas formas de flujos de entrada/salida, el iostream El archivo de encabezado incluye las clases. istream (flujo de entrada) y ostream (flujo de salida) así como sus clases derivadas ifstream, ofstream , y flujo de cuerdas . Las clases más utilizadas de este archivo de encabezado son cin (entrada estándar) y cout (salida estándar) , que le permiten leer la entrada del usuario y mostrar la salida a la consola. Por ejemplo:

 #include using namespace std; int main() { int num; cout <> num; cout << 'You entered: ' << num << endl; return 0; } 

Producción

 Enter a number: 42 You entered: 42 

iomanip: Este archivo de encabezado significa 'manipulación de entrada-salida' . Proporciona herramientas para formatear. aporte y producción . Le permite modificar el alineación, ancho, precisión y otras funciones de formato de entrada y salida. Setw, setprecision, fijo, izquierda, derecha y otras funciones utilizadas habitualmente se enumeran a continuación. Es especialmente útil para presentar datos de una determinada manera.

Ejemplo:

 #include #include using namespace std; int main() { double pi = 3.14159; cout << fixed << setprecision(2) << 'Value of pi: ' << pi << endl; return 0; } 

Producción

mecanografiado para cada
 Value of pi: 3.14 

arroyo: El archivo de encabezado para las operaciones de entrada/salida de archivos se llama fstream . Comprende clases para leer y escribir en archivos. ifstream (flujo de archivo de entrada) y ofstream (flujo de archivos de salida) . El sistema utiliza estas clases para abrir archivos de solo lectura y de solo escritura.

Ejemplo:

 #include #include using namespace std; int main() { ofstream outputFile('output.txt'); if (outputFile.is_open()) { outputFile << 'Hello, File I/O!'; outputFile.close(); cout << 'File is written successfully.' << endl; } else { cout << 'Failed to open the file.' << endl; } return 0; } 

Producción

 The file was written successfully. 

Estos archivos de encabezado se encuentran entre los más importantes para las tareas de entrada/salida de C++. Cada uno tiene un propósito específico y ofrece las herramientas necesarias para gestionar con éxito tareas de entrada y salida, ya sea interactuando con el consola, formateo de salida o trabajar con archivos.

En C++, usamos frecuentemente 'usando el espacio de nombres estándar;' después de los archivos de encabezado. El espacio de nombres estándar; La declaración se usa con frecuencia en C++ para optimizar el código cuando se trabaja con componentes de biblioteca estándar. Examinemos la función y aplicación de esta declaración con más detalle:

A espacio de nombres es una técnica para agrupar identificadores similares (como clases, funciones , y variables ) para evitar conflictos de nombres. La biblioteca estándar de C++ proporciona sus partes (como cin, cout, etc.) en el espacio de nombres estándar.

El término 'estándar' se acorta a 'estándar' , y todos los elementos de la biblioteca estándar están contenidos en él. Al hacer esto, se reducen los conflictos de nombres con los identificadores configurados en su código.

Ahora hablemos de por qué usar el espacio de nombres std; Se utiliza la declaración:

Sin utilizar el espacio de nombres estándar:

 #include int main() { std::cout << 'Hello, world!' << std::endl; return 0; } With using namespace std: #include using namespace std; int main() { cout << 'Hello, world!' << endl; return 0; } 

Como puedes ver, usando el espacio de nombres estándar; declaración le permite omitir el estándar:: prefijo al acceder a los componentes de la biblioteca estándar. Hace que su código sea más corto y más legible, ya que no tiene que repetirlo. estándar:: antes de cada identificador de biblioteca estándar.

Archivos de encabezado de biblioteca de E/S

Flujo de salida estándar (cout):

El objeto cout es un objeto predefinido de clase ostream. Está conectado al dispositivo de salida estándar, que suele ser una pantalla de visualización. El cout se utiliza en combinación con el operador de inserción de flujo (<<) to show the output on a console< p>

Veamos el ejemplo simple de un flujo de salida estándar (cout):

 #include using namespace std; int main( ) { char ary[] = &apos;Welcome to C++ tutorial&apos;; cout &lt;&lt; &apos;Value of ary is: &apos; &lt;&lt; ary &lt;&lt; endl; } 

Producción

 Value of ary is: Welcome to C++ tutorial 

Flujo de entrada estándar (cin)

El comiendo es un objeto predefinido de arroyo clase. Está conectado con el dispositivo de entrada estándar, que suele ser un teclado. El cin se usa junto con el operador de extracción de flujo (>>) para leer la entrada desde una consola.

Veamos el ejemplo simple de flujo de entrada estándar (cin):

 #include using namespace std; int main( ) { int age; cout &lt;&gt; age; cout &lt;&lt; &apos;Your age is: &apos; &lt;&lt; age &lt;&lt; endl; } 

Producción

 Enter your age: 22 Your age is: 22 

Línea final estándar (endl)

El fin es un objeto predefinido de nuestro enemigo clase. Se utiliza para insertar caracteres de nueva línea y vacía la secuencia.

Veamos el ejemplo sencillo de línea final estándar (endl):

 #include using namespace std; int main( ) { cout &lt;&lt; &apos;C++ Tutorial&apos;; cout &lt;&lt; &apos; Javatpoint&apos;&lt;<endl; cout << 'end of line'<<endl; } < pre> <p> <strong>Output</strong> </p> <pre> C++ Tutorial Javatpoint End of line </pre> <h3>Un-buffered standard error stream (cerr):</h3> <p> <strong> <em>cerr</em> </strong> stands for <strong> <em>&apos;standard error&apos;</em> .</strong> </p> <p>It is an unbuffered stream, meaning that output sent to <strong> <em>cerr</em> </strong> is immediately displayed on the console without buffering.</p> <p>It is typically used for displaying error messages and diagnostic information, which need to be displayed immediately to avoid delays caused by buffering.</p> <p> <strong>Example: using cerr:</strong> </p> <pre> #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an error message. </pre> <h3>buffered standard error stream (clog):</h3> <p>clog stands for <strong> <em>&apos;standard log&apos;</em> </strong> . It is a buffered stream, similar to cout. It&apos;s often used for writing informational or diagnostic messages that are less time-sensitive than errors. The use of buffering can improve performance when displaying a large number of messages.</p> <p> <strong>Example: using clog</strong> </p> <pre> #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } </pre> <p> <strong>Output</strong> </p> <pre> This is an informational message. </pre> <p>In both examples, the output will appear on the console. However, the main difference between <strong> <em>cerr</em> </strong> and <strong> <em>clog</em> </strong> lies in their buffering behavior. Due to its unbuffered nature, messages given to <strong> <em>cerr</em> </strong> are displayed right away, but messages sent to clog may be buffered for greater speed. However, they will still eventually appear on the console.</p> <h4>Note: It is important to remember that the type of message you wish to display will determine whether you use cerr or clog. Use cerr for essential messages that need immediate attention (like error messages) and use clog for less critical diagnostic or informational messages that can be buffered for better performance.</h4> <hr></endl;>

Flujo de error estándar sin búfer (cerr):

cerrar representa 'Error estándar' .

Es una secuencia sin búfer, lo que significa que la salida enviada a cerrar se muestra inmediatamente en la consola sin almacenamiento en búfer.

Normalmente se utiliza para mostrar mensajes de error e información de diagnóstico, que deben mostrarse inmediatamente para evitar retrasos causados ​​por el almacenamiento en búfer.

Ejemplo: usando cerr:

 #include int main() { std::cerr &lt;&lt; &apos;This is an error message.&apos; &lt;&lt; std::endl; return 0; } 

Producción

 This is an error message. 

flujo de error estándar almacenado en búfer (obstrucción):

obstruir significa 'registro estándar' . Es una secuencia almacenada en búfer, similar a cout. A menudo se utiliza para escribir mensajes informativos o de diagnóstico que son menos urgentes que los errores. El uso del almacenamiento en búfer puede mejorar el rendimiento al mostrar una gran cantidad de mensajes.

Ejemplo: usar zueco

 #include int main() { std::clog &lt;&lt; &apos;This is an informational message.&apos; &lt;&lt; std::endl; return 0; } 

Producción

 This is an informational message. 

En ambos ejemplos, el resultado aparecerá en la consola. Sin embargo, la principal diferencia entre cerrar y obstruir radica en su comportamiento de amortiguación. Debido a su naturaleza sin búfer, los mensajes entregados a cerrar se muestran de inmediato, pero los mensajes enviados a obstruir pueden almacenarse en un búfer para mayor velocidad. Sin embargo, eventualmente seguirán apareciendo en la consola.

Nota: Es importante recordar que el tipo de mensaje que desea mostrar determinará si utiliza cerr o clog. Utilice cerr para mensajes esenciales que necesitan atención inmediata (como mensajes de error) y utilice clog para mensajes informativos o de diagnóstico menos críticos que se pueden almacenar en buffer para un mejor rendimiento.