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:
- No se permite copiar objetos IO
- 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
- Fin del programa
- Búfer lleno
- endl u otros manipuladores
- os << unitbuf, la secuencia después de la configuración ya no se almacena en búfer y se envía directamente
- 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