Créer un fichier en C++

Jinku Hu 12 octobre 2023
  1. Utilisez std::fstream, std::open et std::ios_base::out pour créer un fichier en C++
  2. Utilisez std::fstream, std::open et std::ios_base::app pour créer un fichier en C++
  3. Utilisez les fonctions std::fstream et fopen pour créer un fichier en C++
Créer un fichier en C++

Cet article explique plusieurs méthodes de création d’un fichier en C++.

Utilisez std::fstream, std::open et std::ios_base::out pour créer un fichier en C++

La création de fichiers est généralement liée à l’opération d’ouverture de fichier, qui est en elle-même l’action d’associer la structure du flux de fichiers au fichier physique correspondant sur le disque. En règle générale, l’opération de création de fichier dépend du mode dans lequel le programme ouvre le fichier. Il existe plusieurs modes pour ouvrir un fichier, comme le mode écriture seule, le mode lecture seule, le mode ajout, etc. Habituellement, chaque mode qui implique l’écriture dans le fichier est destiné à créer un nouveau fichier si le nom de fichier donné n’existe pas. Ainsi, nous devons appeler la fonction intégrée open de std::fstream pour créer un nouveau fichier avec le nom fourni comme premier argument string. Le deuxième argument open spécifie le mode dans lequel ouvrir le flux de fichiers, et ces modes sont prédéfinis par la langue (voir page).

#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;
}

Production:

Done Writing!

Utilisez std::fstream, std::open et std::ios_base::app pour créer un fichier en C++

Alternativement, on peut ouvrir le fichier en mode append noté std::ios_base::app et forcer le flux à se positionner à la fin du fichier à chaque écriture. Ce mode suppose également de créer un nouveau fichier s’il n’existe pas dans le chemin donné. Notez que le flux de fichier ouvert avec succès peut être vérifié avec la fonction is_open qui renvoie true lorsque le flux est associé.

#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;
}

Production:

Done Writing!

Utilisez les fonctions std::fstream et fopen pour créer un fichier en C++

Une autre option pour créer un fichier est d’utiliser l’interface de bibliothèque standard C fopen, qui renvoie la structure FILE*. La fonction prend deux arguments: une chaîne de caractères qui spécifie le chemin du fichier à ouvrir et une autre chaîne littérale pour indiquer le mode dans lequel ouvrir. Six modes communs sont définis: r - lecture seule lorsque le flux est positionné au début, w - écriture seule - au début, a - écriture seule (append) - positionné à la fin du fichier, et les versions plus des trois - r+, w+, a+, qui incluent en plus le mode opposé.

#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;
}

Production:

Done Writing!
Auteur: 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

Article connexe - C++ Filesystem