Crear un archivo en C++

Jinku Hu 12 octubre 2023
  1. Utilice std::fstream, std::open y std::ios_base::out para crear un archivo en C++
  2. Utilice std::fstream, std::open y std::ios_base::app para crear un archivo en C++
  3. Utilice la función std::fstream y fopen para crear un archivo en C++
Crear un archivo en C++

Este artículo explicará varios métodos de cómo crear un archivo en C++.

Utilice std::fstream, std::open y std::ios_base::out para crear un archivo en C++

La creación de archivos generalmente está relacionada con la operación de apertura de archivos, que en sí misma es la acción de asociar la estructura del flujo de archivos al archivo físico correspondiente en el disco. Normalmente, la operación de creación de archivos depende del modo en el que el programa abre el archivo. Hay varios modos para abrir un archivo, como el modo de solo escritura, el modo de solo lectura, el modo de agregar, etc. Por lo general, cada modo que implica escribir en el archivo está destinado a crear un nuevo archivo si el nombre de archivo dado no existe. Por lo tanto, necesitamos llamar a la función incorporada open de std::fstream para crear un nuevo archivo con el nombre proporcionado como el primer argumento de string. El segundo argumento para open especifica el modo en el que se abre el flujo de archivos, y estos modos están predefinidos por el idioma (ver página).

#include <fstream>
#include <iostream>

using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;

int main() {
  string filename("output.txt");
  fstream output_fstream;

  output_fstream.open(filename, std::ios_base::out);
  if (!output_fstream.is_open()) {
    cerr << "Failed to open " << filename << '\n';
  } else {
    output_fstream << "Maecenas accumsan purus id \norci gravida pellentesque."
                   << endl;
    cerr << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Producción :

Done Writing!

Utilice std::fstream, std::open y std::ios_base::app para crear un archivo en C++

Alternativamente, podemos abrir el archivo en modo anexar denotado por std::ios_base::app y forzar que la secuencia se coloque al final del archivo en cada escritura. Este modo también asume la creación de un nuevo archivo si no existe en la ruta dada. Tenga en cuenta que, el flujo de archivo abierto con éxito se puede verificar con la función is_open que devuelve true cuando el flujo está asociado.

#include <fstream>
#include <iostream>

using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;

int main() {
  string text("Large text stored as a string\n");
  string filename2("output2.txt");
  fstream outfile;

  outfile.open(filename2, std::ios_base::app);
  if (!outfile.is_open()) {
    cerr << "failed to open " << filename2 << '\n';
  } else {
    outfile.write(text.data(), text.size());
    cerr << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Producción :

Done Writing!

Utilice la función std::fstream y fopen para crear un archivo en C++

Otra opción para crear un archivo es utilizar la interfaz de biblioteca estándar de C fopen, que devuelve la estructura FILE*. La función toma dos argumentos: una cadena de caracteres que especifica el nombre de la ruta del archivo que se abrirá y otra cadena literal para indicar el modo en el que se abrirá. Se definen seis modos comunes: r - solo lectura cuando el flujo está posicionado al principio, w - solo escritura - al principio, a - solo escritura (agregar) - posicionado al final del archivo, y las versiones plus de los tres - r+, w+, a+, que además incluyen el modo opuesto.

#include <fstream>
#include <iostream>

using std::cerr;
using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;

int main() {
  string text("Large text stored as a string\n");
  fstream outfile;

  string filename3("output3.txt");
  FILE *o_file = fopen(filename3.c_str(), "w+");
  if (o_file) {
    fwrite(text.c_str(), 1, text.size(), o_file);
    cerr << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Producción :

Done Writing!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ Filesystem