Marcar las banderas ios en c ++

Al abrir un archivo, ya sea mediante la construcción de una ofstream o ifstream ejemplo, se puede modificar la forma en que el archivo se abrirá mediante el suministro de lo que se llaman las banderas. En términos informáticos, una bandera no es más que un pequeño elemento cuya presencia o falta de presencia indica una función de cómo hacer algo. Con el ofstream y ifstream clases, la función en cuestión es el constructor.

Una bandera se parece ios :: aplicación si está utilizando un compilador que no es totalmente compatible con ANSI, o se parece ios_base :: aplicación si utiliza una que es totalmente compatible con ANSI. Esta bandera particular, significa que desea escribir en un archivo, pero desea anexar a los datos existentes que ya pueden estar en un archivo. Usted suministro de este indicador como argumento del constructor para ofstream, como en cualquiera de los siguientes ejemplos:

ofstream archivosalida ("AppendableFile.txt", Ios :: app) -ofstream archivo_salida ("AppendableFile.txt", Ios_base :: app) -

Se puede ver que la bandera se añade como segundo parámetro al constructor. Existen otras banderas además aplicación, y se pueden combinar mediante el uso de la o operador, |. Por ejemplo, una bandera es ios :: nocreate (Que no se incluye en los nuevos compiladores).

Éste significa “solamente abrir el archivo si ya existe”. Es decir, no cree el archivo si no existe. (Recuerda, ofstream crea un archivo si no existe ya.) Si no existe el archivo, open fallará, y cuando se llama fallar, obtendrá una vuelta cierto.

los ios :: nocreate bandera es práctico con ios :: aplicación. En conjunto, esto significa abrir un archivo existente y añadir a ella. Es decir, los dos juntos sólo funcionará si el archivo ya existe, y la llamada se abrirá el archivo para una operación de anexión. Si ya no existe el archivo, no se creará el archivo. He aquí un ejemplo de llamada:

Video: FUNBBTV : aprender las banderas con RiRi nuestra Kawaii en español

ofstream archivosalida ("../MyFile.txt", Ios :: aplicación | ios :: nocreate) -Si (outfile.fail ()) {cout lt; lt; "No se pudo abrir el archivo!" lt; lt; endl retorno 0-} archivo_salida lt; lt; "Hola" lt; lt; endl-outfile.close () -

Si MyFile.txt no existe cuando se ejecuta este código, se obtiene el mensaje No se pudo abrir el archivo! Pero si MyFile.txt sí existe, la aplicación abre, añade la cadena Hola a ella, y finalmente se cierra.

Video: Colors in Spanish. Color flags. / Los colores. Las banderas de colores

Resulta que la nocreate bandera no está disponible en la nueva biblioteca estándar. Gorrón. Por lo tanto, el código sólo funciona si está utilizando una versión anterior de la biblioteca. Cuando se utiliza el compilador de Code :: Blocks, aparece el mensaje de error siguiente:

error: `nocreate` no es un miembro de `-std :: ios`

Sin embargo, tendrá que probar si su compilador particular incluye una biblioteca que soporta ios :: nocreate. Su compilador puede apoyar todos modos, incluso si se incluye la nueva biblioteca estándar. Como alternativa a la ios :: nocreate, se puede utilizar el siguiente código (que se encuentra en el FileOutput02 ejemplo):

ifstream infile ("../MyFile.txt") -Si (infile.fail ()) {cout lt; lt; "No se pudo abrir el archivo!" lt; lt; endl retorno 0-} infile.close () - archivo_salida ofstream ("../MyFile.txt", Ios :: app) -outfile lt; lt; "Hola" lt; lt; endl-outfile.close () -

En este caso, se empieza por intentar abrir el archivo para lectura. Si no existe el archivo, no se puede leer de él y el código termina con un mensaje de fallo. Si el código se puede leer en el archivo, se vuelve a abrir el archivo para escritura. Se trata de una solución engorroso, pero funciona.

A continuación se presenta una lista de las banderas disponibles. En primer lugar, aquí son los de ios, en caso de que esté utilizando un compilador que no es completamente compatible con ANSI:

  • ios :: aplicación: Este indicador significa que desea abrir un archivo y anexar a la misma.

  • en ios ::: Incluir este indicador si desea leer desde un archivo.

  • ios :: cabo: Incluir este indicador si desea escribir en un archivo.

  • ios :: trunc: Incluir este indicador si desea borrar el contenido del archivo antes de escribir en él. Es lo contrario de adjuntar, y también es el valor predeterminado si no se incluye específicamente ios :: aplicación.

  • ios :: nocreate: Utilice esta opción si desea asegurarse de que el archivo no se creará si no existe, lo que resulta en el archivo no se abre.

  • ios :: noreplace: Esta bandera es lo contrario de nocreate. Utilice esta opción si sólo desea crear un nuevo archivo. Si se utiliza esta bandera y el archivo ya existe, el archivo no se abre, y que el no volverá cierto.

compiladores compatible con ANSI no son compatibles con el ios :: noreplace bandera tampoco. En este caso, se puede utilizar el opuesto de la solución para el ios: nocreate bandera, como se muestra aquí (y se encontró en el FileOutput03 ejemplo):

ifstream infile ("../MyFile.txt") -Si (! Infile.fail ()) {cout lt; lt; "El archivo ya existe!" lt; lt; endl retorno 0-} infile.close () - archivo_salida ofstream ("../MyFile.txt") -outfile lt; lt; "Hola" lt; lt; endl-outfile.close () -

En este caso, el código intenta abrir el archivo para lectura. Si el archivo existe, el código muestra un mensaje de error y se cierra. De lo contrario, el código crea un nuevo archivo y escribe en ella.

Los siguientes indicadores están disponibles en un compilador que es absolutamente compatible con ANSI!

  • ios :: comió: Utilice esta bandera para ir al final del archivo después de abrirlo. Normalmente, se utiliza este indicador cuando se desea añadir datos al archivo.

  • ios_base :: binaria: Utilice esta opción para especificar que el archivo que está abriendo sostendrá datos binarios - es decir, los datos que no representan cadenas de caracteres.

  • ios_base :: en: Especifique esta etiqueta cuando se quiere leer desde un archivo.

  • ios_base :: cabo: Incluir este indicador cuando se quiere escribir en un archivo.

  • ios_base :: trunc: Incluir este indicador si desea borrar el contenido de un archivo antes de escribir en él.

  • ios_base :: aplicación: Incluir este indicador si desea anexar al archivo. Es lo contrario de trunc - es decir, la información que ya está en el archivo cuando se abre se quedará allí.

Video: sound car las banderas ciudad bolivar

¿Por qué necesita una de bandera y un fuera ¿bandera? Parece que el equipo debe saber si usted está escribiendo en un archivo o leer de ella, dependiendo (respectivamente) de si se utiliza ofstream o ifstream. La respuesta a por qué usted tiene una en bandera y una fuera la bandera es que otras clases están disponibles, además de ofstream y ifstream.

Los compiladores que aún no admiten totalmente el estándar ANSI tienen una clase genérica en sus bibliotecas llamada fstream. Los compiladores compatible con ANSI tienen en sus bibliotecas una clase de plantilla llamada basic_filebuf y una clase llamada filebuf. Si utiliza estas clases, se puede utilizar el en y fuera banderas.

Artículos Relacionados