Notas de lectura "C ++ Primer" - Capítulo 01 Clase IO

Autor: Ma Zhifeng
Enlace: https: //zhuanlan.zhihu.com/p/24100020
Fuente: saber casi con
derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.

declaración:

  • El contenido del artículo se recopila y compila de "C ++ Primer Chinese Edition (5th Edition)", y los derechos de autor pertenecen al libro original.
  • El libro original tiene interpretaciones más detalladas y maravillosas, compre libros genuinos para aprender.
  • Este artículo es solo para aprendizaje y comunicación, cualquier forma de reimpresión está prohibida.

texto

yo

  • IO del dispositivo
    • archivo de encabezado de iostream
    • archivo de encabezado fstream
  • IO de memoria
    • archivo de encabezado sstream

archivo de encabezado de iostream

  • istream, wistream leído de la transmisión
  • ostream, wostream escribir para transmitir
  • iostream, wiostream leer y escribir

Los otros dos tienen estructuras similares y existe una relación de herencia entre los tres

Cuando los objetos IO se utilizan como parámetros formales o tipos de retorno, los tipos de referencia no constantes se suelen utilizar porque:

  1. No se permite copiar objetos IO
  2. Leer y escribir un objeto IO cambiará su estado, por lo que no puede ser constante

Estado de la transmisión

  • Un tipo
  • Cuatro miembros de datos
  • Cuatro funciones de estado de flujo
  • Funciones de estado de cuatro bits

Un tipo

strm :: iostate es un tipo que se usa para expresar el estado de la secuencia y admite operaciones de bits

Cuatro funciones de estado de flujo

  • s.rdstate () devuelve el estado actual de la secuencia, el tipo es iostate
  • s.setstate (flags) establece el estado de la secuencia, el tipo de banderas es iostate
  • s.clear (flags) restablece el estado de una ubicación determinada, el tipo de banderas es iostate
  • s.clear () restablecer todo

Cuatro miembros de datos

Representa cuatro estados de flujo diferentes, que son uno de los iostate

  • strm :: badbit significa caída del flujo
  • strm :: failbit indica que la operación de E / S falló
  • strm :: eofbit significa llegar al final del archivo
  • strm :: goodbit indica que la secuencia no tiene errores

Funciones de estado de cuatro bits

Obtener el estado del bit correspondiente

  • a. de ()
  • s.fail ()
  • s.bad ()
  • es bueno()

Para los tres primeros, si el bit correspondiente está establecido, devuelve verdadero.
Para good (), si el flujo está en un estado válido, devuelve verdadero

Ejemplo

cin.clear( cin.rdstate() & ~cin.failbit & ~cin.badbit );

Restablecer failbit y badbit, otros bits permanecen sin cambios

while( cin>>num ){}

El ciclo while comprueba el estado de la secuencia devuelta por la expresión >>. Cuando la secuencia sigue siendo válida, la condición es verdadera

int num;  
cin >> num;

Espere leer un número entero. Si ingresa "Boo", la transmisión entra en un estado de error cuando se encuentra el carácter B, y las entradas posteriores no serán válidas.

Administrar el almacenamiento en búfer de salida

Cada flujo de salida administra un búfer para guardar los datos leídos y escritos por el programa.

os<<"xxx";

La cadena puede imprimirse inmediatamente o puede guardarse en el búfer y luego imprimirse

En los siguientes casos, el búfer se verá obligado a actualizarse

  1. Fin del programa
  2. Búfer lleno
  3. endl u otros manipuladores
  4. os << unitbuf, la secuencia después de la configuración ya no se almacena en búfer y se envía directamente
  5. Flujo asociado
  • endl inserta un carácter de nueva línea y vacía el búfer
  • termina inserta un carácter nulo y vacía el búfer
  • flush flush buffer

Cin y cout en la biblioteca estándar están vinculados entre sí. El uso de cin hará que el búfer cout se vacíe.

Puede utilizar la función de empate para establecer la asociación

Supongo que te gusta

Origin blog.csdn.net/qq_26751117/article/details/53442420
Recomendado
Clasificación