costo

De hecho, hay tres principales que usas habitualmente: cout, cerr y clog. Primero, presentamos brevemente los siguientes tres.

Estas tres son todas las herramientas de salida proporcionadas en la biblioteca estándar de E / S en C ++ (los problemas de sobrecarga relevantes no se tratan aquí):

cout: objeto ostream escrito en salida estándar;

cerr: salida de objeto ostream a error estándar, comúnmente utilizada para información de error de programa;

clog: también genera el flujo de error estándar (esto es lo mismo que cerr) Parece que esto rara vez se usa;

 

Cuando se trata de salida, los tres son diferentes:

1. La salida de cout después del almacenamiento en búfer es la pantalla por defecto. Esta es una salida en búfer, es una salida estándar y se puede redirigir (para el significado de la redirección, consulte el siguiente ejemplo);

2. El CERR se emite directamente sin almacenamiento en búfer. Generalmente se usa para generar rápidamente información de error. Es un error estándar. Por defecto, está conectado a la secuencia de salida estándar, pero no está almacenado en búfer. Es decir, el mensaje de error puede enviarse directamente a la pantalla. No es necesario esperar hasta que se muestren el búfer o los nuevos saltos de línea. En circunstancias normales, no se redirige (la redirección parece ser controvertida, algunas personas dicen que está relacionada con el sistema, no lo entiendo del todo)

 

 

Por qué hay cerr y obstrucción

  Por ejemplo, su programa encuentra la amenaza de quedarse sin pila de llamadas (infinito, sin recursión de salida).

  Usted dice, ¿dónde toma prestada memoria para almacenar sus mensajes de error?

  Entonces con cerr. Su propósito es ser compatible con la función de salida en situaciones de emergencia donde más lo necesita.

  El propósito del búfer es reducir la cantidad de actualizaciones de pantalla, por ejemplo, su programa emite un artículo en la Biblia. Sin almacenamiento en búfer, cada vez que se escribe una letra, se emite una letra y se desliza la pantalla. Con el almacenamiento en búfer, verá varias oraciones "simultáneamente" en la pantalla (de la memoria a la memoria de video, y luego actualizará la pantalla).

 

Adjunto:

#include <iostream>

usando el espacio de nombres estándar;

int main ()

{

cout << "cout" << endl;

cerr << "cerr" << endl;

devuelve 0;

}

Después de ejecutar este programa, ejecutamos los siguientes comandos en la línea de comandos:

Suponga que el archivo ejecutable después de la compilación y operación se llama cerr.exe, y su directorio es E: \ cpro \ cerr \ Debug \ cerr.exe

En la línea de comando, cambie a este directorio y ejecute el comando: cerr> test.log

La salida de la línea de comando es la siguiente:

E: \ cpro \ cerr \ Debug> cerr >> test2.log

Cerr (esto se emite desde la línea de comando)

Verifique el archivo test2.log y descubra que solo hay

Costo

Una linea

Quizás esta sea la llamada salida redirigida.

Se puede ver a partir de esto:
cout se emite en la pantalla del terminal. El flujo de cout abre correspondientemente un búfer en la memoria para almacenar los datos en el flujo. Cuando se inserta un extremo en el flujo de cout, independientemente de si el búfer se desborda, es inmediatamente Imprima todos los datos en la secuencia y luego inserte un carácter de nueva línea. 

El objeto de flujo de cerr es un flujo de error estándar, que se especifica que está asociado con el monitor. Tiene el mismo efecto que cout.
Es un poco diferente de que cout  se pasa generalmente a la salida del monitor, pero se puede redirigir al archivo, y la información en el flujo de cerr solo se puede emitir en el monitor. La 
secuencia de obstrucción también es una secuencia de error estándar. La función es la misma que la de cerr.La diferencia es que cerr no pasa el búfer y envía información directamente a la pantalla. La información en la obstrucción se almacena en el búfer.

Vi esto nuevamente cuando vi C ++ Primer (Cuarta edición) hoy, extracto de un párrafo para su referencia:

"La biblioteca estándar define cuatro objetos IO. Al procesar la entrada, se usa un objeto de tipo istream llamado cin. Este objeto también se convierte en entrada estándar. Al procesar la salida, se usa un objeto de tipo ostream llamado cout. Este objeto también se llama salida estándar. Estándar La biblioteca también define otros dos objetos ostream, llamados cerr y clog. El objeto cerr también se llama error estándar, y generalmente se usa para enviar advertencias y mensajes de error a los usuarios del programa, mientras que el objeto clog se usa para generar información general sobre la ejecución del programa. En circunstancias normales, el sistema asocia estos objetos con la ventana de ejecución, de modo que cuando leemos desde cin, los datos se leen desde la ventana del programa de ejecución, y cuando se escriben en cout, cerr, clog, la salida se escribe en la misma ventana. Los programas, la mayoría de los sistemas operativos proporcionan una forma de redirigir las secuencias de entrada o salida. La redirección se puede utilizar para asociar estas secuencias con el archivo seleccionado ".

Transferencia desde https://blog.csdn.net/qq_38556370/article/details/80640845

Supongo que te gusta

Origin www.cnblogs.com/xxxsans/p/12758111.html
Recomendado
Clasificación