Programmation en C ++ avec la bibliothèque de flux

Document standard de la norme ANSI C donne une bibliothèque complète de classes qui gèrent les flux et générale d'entrée / sortie. Heureusement, la plupart des classes dans la bibliothèque standard sont disponibles avec presque tous les compilateurs actuellement disponibles.

Sommaire

Obtenir le fichier d'en-tête droite

La bibliothèque de flux comprend plusieurs classes qui font que votre vie beaucoup plus facile. Il a également plusieurs classes qui peuvent vous rendre la vie plus compliquée, principalement parce que ce sont les classes auxiliaires que vous aurez probablement utilisez rarement. Voici deux des classes les plus communes que vous allez utiliser. (Et rappelez-vous: Ces classes sont disponibles dans à peu près toutes les implémentations C ++, si la bibliothèque standard complète est présente ou non.)

  • ifstream: Ceci est un flux d'instancier si vous voulez lire un fichier.

  • ofstream: Ceci est un flux d'instancier si vous voulez écrire dans un fichier.

Avant de pouvoir utiliser la ifstream et ofstream classes, vous comprennent le fichier d'en-tête appropriée. Ceci est où les choses se corsent. Dans les premiers jours de C ++, les gens utilisaient le fichier d'entête . Mais quelque part au milieu des années 1990, les gens ont commencé à utiliser la Standard Template Library (et à la fin des années 1990, la bibliothèque standard C ++), qui tous deux vous tenus d'inclure (sans le .h extension).

Le Standard Template Library et la Bibliothèque standard mis toutes leurs classes et des objets à l'intérieur du std namespace. Ainsi, lorsque vous souhaitez utiliser un élément de la bibliothèque de flux, vous devez soit

  • Préfixer son nom avec std, comme dans cet exemple:

    std :: ofstream outfile ("MonFichier.txt") -
  • Inclure une aide directive avant les lignes où vous utilisez les classes de flux, comme dans cet exemple:

using namespace std-ofstream outfile ("MonFichier.txt") -

Par défaut, le compilateur GCC reconnaît automatiquement le std namespace (il est comme si vous aviez une ligne using namespace STD même si vous ne le faites pas).




Si vous utilisez un compilateur autre que GCC, suivez votre #comprendre lignes avec la ligne aide namespacestd-. Ensuite, vous pouvez saisir tout le code de l'échantillon tel quel, y compris les exemples de flux, sans avoir besoin de mettre std :: avant chaque classe ou l'objet de la bibliothèque standard.

Ouverture d'un fichier

Accédez au traitement de texte, choisissez Fichier-Ouvrir, et le type MyGreatChapter.doc.

Oops. Vous obtenez un message d'erreur. Ne existe pas ce fichier.

Oh, vous avez raison; vous ne l'avez pas encore écrit. Au lieu de cela, créer un nouveau document à l'intérieur du traitement de texte, de type 800 pages fraîches au cours d'une soirée de détente, et ensuite (lorsque vous êtes tous fini) enregistrer le fichier. Donnez-lui le nom MyGreatChapter.doc. Ensuite, arrêtez le traitement de texte, sortir de la piscine, se vanter auprès de vos amis sur les nouveaux romans que vous écrivez, et aller au lit.

Le lendemain matin, ouvrez le document. Cette fois, il existe, de sorte que le traitement de texte ouvre et lit les informations.

Comme vous pouvez le voir, deux questions se présentent à l'ouverture d'un fichier:

  • Créez un nouveau fichier

  • Ouvrir un fichier existant

Voici où la vie devient un peu étrange: Certains systèmes d'exploitation traitent ces deux éléments comme une seule entité. La raison en est que lorsque vous créez un nouveau fichier, normalement vous voulez commencer à utiliser immédiatement, ce qui signifie que vous voulez créer un nouveau fichier, puis ouvrez-le. Et si le processus de création d'un fichier est souvent intégré à droite dans le processus d'ouverture d'un fichier.

Et lorsque vous ouvrez un fichier existant que vous voulez écrire, vous avez deux choix:

  • Effacez le Contents- actuelle puis écrire dans le fichier.

  • Gardez les contenus existants et écrivez votre information à la fin du fichier. C'est appelé ajoutant informations dans un fichier.

La FileOutput01 exemple de code vous montre comment ouvrir un fichier flambant neuf, d'écrire quelques informations à elle, puis le fermer. (Mais attendez, il ya plus: Cette version fonctionne si vous avez les nouveaux compilateurs ANSI-conformes ou les plus âgés)

#comprendre #comprendre using namespace main () {ofstream outfile std-int ("../ MonFichier.txt") - outfile lt; lt; "Salut" lt; lt; endl-outfile.close () - retour 0-}

Le court application ouvre un fichier appelé MyFile.txt. (La “ ../” une partie du chemin de fichier place le fichier dans le répertoire parent pour l'exemple, qui est le dossier Chapter01.) Elle le fait en créant une nouvelle instance de ofstream, qui est une classe pour écrire dans un fichier.

La prochaine ligne de code écrit la chaîne "Salut" dans le fichier. Il utilise l'opérateur d'insertion, >>, tout comme cout t. En fait, ofstream est dérivée de la classe que très cout est une instance de, et que signifie toutes les choses que vous pouvez faire avec cout vous pouvez aussi le faire avec votre fichier! Hou la la!

Lorsque vous avez terminé l'écriture du fichier, fermez-le en appelant le Fermer fonction de membre. C'est important!

Si vous voulez ouvrir un fichier existant et ajouter à elle, vous pouvez modifier légèrement la liste. Tout ce que vous faire est de changer les arguments passés au constructeur comme suit:

ofstream outfile ("MonFichier.txt", ios_base :: app) -

La ios :: app article est une énumération intérieur d'une classe appelée ios, et le ios_base :: app article est une énumération de la classe appelée ios_base.

La ios classe est la classe de base à partir de laquelle la ofstream classe est dérivée. La ios classe sert également une classe de base pour ifstream, qui est pour la lecture des fichiers.

Pour de nouveaux compilateurs, la ios_base classe est une base pour ofstream et ifstream. (Un couple de classes sont entre les deux. ofstream est un modèle de classe dérivée d'une classe de modèle appelé basic_ofstream, qui est dérivé d'une classe de modèle appelé basic_ios, qui est dérivée de la classe ios_base.)

Vous pouvez également lire à partir d'un fichier existant. Cela fonctionne exactement comme la cin objet. La FileRead01 exemple illustré ouvre le fichier créé précédemment et lit la chaîne avant. Cet exemple utilise à nouveau le répertoire parent comme un lieu commun pour créer, mettre à jour et lire les fichiers.

#comprendre #comprendre #comprendre using namespace main () {string mot-ifstream infile std-int ("MyFile.txt ../") - infile >> mot-cout lt; lt; mot lt; lt; endl-infile.close () - retour 0-}

Lorsque vous exécutez cette application, la chaîne écrite plus tôt dans le fichier - "Salut," - apparaît à l'écran. Ça a marché! Il lire la chaîne à partir du fichier!


» » » » Programmation en C ++ avec la bibliothèque de flux