Programación en C ++ con la biblioteca arroyos
El documento estándar ANSI C ++ proporciona una completa biblioteca de clases que se ocupan de los arroyos y de entrada / salida general. Afortunadamente, la mayoría de las clases en la biblioteca estándar están disponibles con casi todos los compiladores actualmente disponibles.
Conseguir el archivo de cabecera derecha
La biblioteca corrientes incluye varias clases que hacen la vida mucho más fácil. También cuenta con varias clases que pueden hacer su vida más complicada, sobre todo porque se trata de clases auxiliares que es probable que rara vez utiliza. Estas son dos de las clases más comunes que va a utilizar. (Y recuerde: Estas clases están disponibles en casi todas las implementaciones de C ++, si la biblioteca estándar completo está presente o no.)
ifstream: Se trata de una corriente usted instancia si desea leer desde un archivo.
ofstream: Se trata de una corriente usted instancia si quieres escribir en un archivo.
Antes de que pueda utilizar el ifstream y ofstream clases, que incluyen el archivo de cabecera adecuada. Aquí es donde las cosas se ponen feas. En los primeros días de C ++, la gente utiliza el archivo de cabecera . Pero en algún momento a mediados de la década de 1990, la gente comenzó a usar la Biblioteca de plantillas estándar (y a finales de 1990, el C ++ Standard Library), ambos de los cuales usted obligados a incluir
La Biblioteca de plantillas estándar y la Biblioteca Estándar ponen todas sus clases y objetos en el interior del std espacio de nombres. Por lo tanto, cuando se desea utilizar un elemento de la biblioteca de arroyos, debe
Anteponer su nombre con std, como en este ejemplo:
std :: ofstream archivosalida ("MyFile.txt") -
Incluya una usando la directiva antes de las líneas en los que utilice las clases de flujo, como en este ejemplo:
using namespace std-ofstream archivosalida ("MyFile.txt") -
Por defecto, el compilador GCC reconoce automáticamente la std espacio de nombres (es como si tuvieras una línea utilizando STD- espacio de nombres incluso cuando usted no lo hace).
Si estás utilizando un compilador que no sea GCC, siga su #include líneas con la línea usando namespacestd-. A continuación, puede escribir todo el código de muestra tal cual, incluyendo los ejemplos de streaming, sin necesidad de poner std :: antes de cada clase o un objeto de la librería estándar.
La apertura de un archivo
Ir al procesador de texto, seleccione Archivo-Abrir, y el tipo MyGreatChapter.doc.
Vaya. Usted obtiene un mensaje de error. Ese archivo no existe.
Oh, es cierto; no se ha escrito todavía. En su lugar, crear un nuevo documento en el procesador de texto, tipo 800 páginas frescas en el transcurso de una noche de descanso, y luego (cuando ya está todo terminado) guardar el archivo. Darle el nombre MyGreatChapter.doc. A continuación, apague el procesador de textos, pasar el rato en la piscina, presumir a sus amigos acerca de las nuevas novelas que estés escribiendo, e ir a la cama.
A la mañana siguiente, abra el documento. Esta vez es que existe, por lo que el procesador de textos abre y lee en la información.
Como se puede ver, dos cuestiones se presentan en la apertura de un archivo:
Crear un nuevo archivo
Abra un archivo existente
Aquí es donde la vida se vuelve un poco extraño: Algunos sistemas operativos tratan a estos dos elementos como una sola entidad. La razón es que cuando se crea un nuevo archivo, normalmente desea iniciar de inmediato su uso, lo que significa que desea crear un nuevo archivo y abrirlo. Y por lo que el proceso de creación de un archivo a menudo se inserta directamente en el proceso de abrir un archivo.
Y cuando se abre un archivo existente que desea escribir, usted tiene dos opciones:
Borrar el contenido- actual luego escribir en el fichero.
Mantener el contenido existente y escriba su información al final del archivo. Se llama anexando información en un archivo.
los FileOutput01 ejemplo de código muestra cómo abrir un archivo nuevo, escribir alguna información a la misma, y luego cerrarlo. (Pero espere, aún hay más: Esta versión funciona si usted tiene los compiladores más reciente ANSI compatibles o los más viejos)
#include#include using namespace main () {archivosalida ofstream-std int ("../ MyFile.txt") - archivosalida lt; lt; "Hola" lt; lt; endl-outfile.close () - retorno 0-}
La solicitud de trabajo abre un archivo llamado MyFile.txt. (Los " ../" parte de la ruta del archivo coloca el archivo en el directorio principal para el ejemplo, que es la carpeta Chapter01.) Lo hace mediante la creación de una nueva instancia de ofstream, que es una clase para escribir en un archivo.
La siguiente línea de código escribe la cadena "Hola" en el archivo. Se utiliza el operador de inserción, >>, Tal como cout hace. De hecho, ofstream se deriva de la clase que muy cout es una instancia de, y por lo que significa que todas las cosas que puedes hacer con cout también se puede hacer con el archivo! ¡Guauu!
Cuando termine de escribir en el archivo, ciérrela llamando al cerca función miembro. ¡Esto es importante!
Si desea abrir un archivo existente y añadir a ella, puede modificar la lista ligeramente. Todo lo que hacemos es cambiar los argumentos pasados al constructor de la siguiente manera:
ofstream archivosalida ("MyFile.txt", ios_base :: app) -
los ios :: aplicación artículo es una enumeración dentro de una clase llamada ios, y el ios_base :: aplicación artículo es una enumeración de la clase llamada ios_base.
los ios clase es la clase base de la que el ofstream clase se deriva. los ios clase también sirve como una clase base para ifstream, que es para la lectura de archivos.
Para más nuevos compiladores, la ios_base clase es una base para ofstream y ifstream. (Un par de clases son en el medio. ofstream es una clase de plantilla derivado de una clase de plantilla llamada basic_ofstream, que se deriva de una clase de plantilla llamada basic_ios, que se deriva de la clase ios_base.)
También puede leer desde un archivo existente. Esto funciona igual que el cin objeto. los FileRead01 ejemplo que se muestra se abre el archivo creado anteriormente y lee la cadena de nuevo. En este ejemplo se utiliza el directorio padre de nuevo como un lugar común para crear, actualizar y leer archivos.
#include#include #include using namespace main () {string infile-std int palabra ifstream ("MyFile.txt ../") - infile >> palabra cout lt; lt; palabra lt; lt; endl-infile.close () - retorno 0-}
Al ejecutar esta aplicación, la cadena escrita anteriormente al expediente - "Hola," - aparece en pantalla. ¡Funciono! Decía la cadena en el archivo!