Modes ouverts en C ++

Ce tableau montre les différents modes en C ++ qui sont possibles lors de l'ouverture d'un fichier. Cependant, vous devez répondre à trois questions de base chaque fois que vous ouvrez un fichier:

  • Voulez-vous lire le fichier ou écrire dans le fichier? Usage ifstream à lire et à ofstream pour l'écriture. Si vous avez l'intention à la fois lire et écrire dans le même fichier, utilisez le fstream et le mode réglé sur in | out, mais bonne chance - il est beaucoup mieux d'écrire dans un fichier complètement et puis fermez-le et rouvrez-le pour la lecture comme un objet distinct.

  • Si vous écrivez dans le fichier et il existe déjà, voulez-vous ajouter au contenu existant (dans ce cas, ouvert avec mangé définir) ou de tronquer le fichier et recommencer (dans ce cas, l'utilisation trunc)?




  • Est-ce que vous lisez ou l'écriture du texte ou des données binaires? Les deux ifstream et ofstream par défaut en mode texte. Usage binaire mode si vous lisez ou écrire des données brutes, non-texte.

Constantes qui contrôlent la façon dont les fichiers sont ouverts
DrapeauSignification
ios_base :: appChercher à fin-de-fichier avant chaque écriture.
ios_base :: mangéChercher à fin-de-fichier immédiatement après l'ouverture du fichier, si itexists.
ios_base :: binaireOuvrir le fichier en mode binaire (alternative est en mode texte).
ios_base :: dansOuvrir le fichier pour l'entrée (implicite pour istream).
ios_base :: outOuvrir le fichier pour la sortie (implicite pour ostream).
ios_base :: truncTronquer le fichier, si elle existe (par défaut pour ostream).

La principale différence entre le mode binaire et texte réside dans la façon dont les nouvelles lignes sont gérées. Le système d'exploitation Unix a été écrit à l'époque où les machines à écrire étaient encore à la mode (quand il a été appelé “ taper ” au lieu de “ la saisie au clavier ”). Unix est terminée phrases avec un saut de ligne suivi d'un retour chariot.

Les systèmes d'exploitation suivants ne voyaient aucune raison de continuer à utiliser deux caractères à la fin d'une phrase, mais ils ne pouvaient pas se mettre d'accord sur le caractère à utiliser. Certains utilisent le retour chariot, d'autres ont utilisé le saut de ligne, retour à la ligne maintenant renommé. La norme de l'C est le seul retour à la ligne.

Quand un fichier est ouvert en mode texte, la bibliothèque du C convertit le caractère de nouvelle ligne unique dans ce qui est approprié pour votre système d'exploitation sur la production, que ce soit un retour chariot et le saut de ligne, un seul retour chariot, un saut de ligne, ou tout autre chose. Il effectue la conversion inverse lors de la lecture d'un fichier. La bibliothèque du C fait pas de telles conversions pour un fichier ouvert en mode binaire.

Toujours utiliser le mode binaire lors de la manipulation d'un fichier qui est pas au format lisible par l'homme. Sinon, si un octet dans le flux de données se trouve être le même que d'un retour chariot ou un saut de ligne, le fichier I / O bibliothèque sera le modifier.


» » » » Modes ouverts en C ++