Accueil Finances personnelles En signalant les indicateurs ios en C ++ - dummies

En signalant les indicateurs ios en C ++ - dummies

Vidéo: Loneliness 2024

Vidéo: Loneliness 2024
Anonim

Lorsque vous ouvrez un fichier en construisant une instance ofstream ou ifstream, vous pouvez modifier la façon dont le fichier s'ouvrira en fournissant ce qu'on appelle des flags. En termes informatiques, un indicateur est simplement un petit élément dont la présence ou le manque de présence indique à une fonction comment faire quelque chose. Avec les classes ofstream et ifstream, la fonction en question est le constructeur.

Un indicateur ressemble à l'application ios:: si vous utilisez un compilateur qui n'est pas entièrement compatible ANSI ou qui ressemble à l'app ios_base:: si vous en utilisez un qui est entièrement compatible ANSI. Cet indicateur particulier signifie que vous voulez écrire dans un fichier, mais vous souhaitez ajouter à toutes les données existantes qui peuvent déjà être dans un fichier. Vous fournissez ce drapeau en tant qu'argument du constructeur pour ofstream, comme dans l'un des exemples suivants:

outstream du fichier ("AppendableFile.txt", ios:: app); outstream du fichier ("AppendableFile. txt", ios_base:: app);

Vous pouvez voir que l'indicateur est ajouté en tant que deuxième paramètre au constructeur. D'autres indicateurs existent en plus de l'application, et vous pouvez les combiner en utilisant l'opérateur ou, | Par exemple, un drapeau est ios:: nocreate (qui n'est pas inclus dans les nouveaux compilateurs).

Celui-ci signifie "ouvrir seulement le fichier s'il existe déjà. "C'est-à-dire, ne créez pas le fichier s'il n'existe pas. (Souvenez-vous, ofstream crée un fichier s'il n'existe pas déjà.) Si le fichier n'existe pas, l'ouverture échouera et, lorsque vous appellerez échouer, vous obtiendrez un vrai .

Le drapeau ios:: nocreate est pratique avec ios:: app. Ensemble, ils signifient ouvrir un fichier existant et y ajouter . Autrement dit, les deux ensemble ne fonctionneront que si le fichier existe déjà et l'appel ouvrira le fichier pour une opération d'ajout. Si le fichier n'existe pas déjà, le fichier ne sera pas créé. Voici un exemple d'appel:

ofstream outfile ("… / MyFile.txt", ios:: app | ios:: nocreate); if (outfile. fail ()) {cout << "n'a pas pu ouvrir le fichier!" << endl; return 0;} outfile << "salut" << endl; fichier sortant. Fermer();

Si MyFile. txt n'existe pas lorsque vous exécutez ce code, vous obtenez le message Impossible d'ouvrir le fichier! Mais si MyFile. txt existe, l'application l'ouvre, y ajoute la chaîne Hi et enfin la ferme.

Il s'avère que le drapeau nocreate n'est pas disponible dans la nouvelle bibliothèque standard. Bummer. Par conséquent, le code ne fonctionne que si vous utilisez une version antérieure de la bibliothèque. Lorsque vous utilisez le compilateur Code:: Blocks, vous voyez le message d'erreur suivant:

erreur: 'nocreate' n'est pas membre de '; std:: ios '

Cependant, vous voudrez tester si votre compilateur comprend une bibliothèque qui supporte ios:: nocreate.Votre compilateur peut le supporter de toute façon, même s'il inclut la nouvelle bibliothèque standard. Comme alternative à ios:: nocreate, vous pouvez utiliser le code suivant (trouvé dans l'exemple FileOutput02):

ifstream infile ("… / MyFile.txt"); if (infile. fail ()) {cout << "impossible d'ouvrir le fichier!" << endl; return 0;} infile. Fermer(); outstream du fichier ("… / MyFile.txt", ios:: app); outfile << << hi >> << endl; fichier sortant. Fermer();

Dans ce cas, vous commencez par essayer d'ouvrir le fichier pour le lire. Si le fichier n'existe pas, vous ne pouvez pas le lire et le code se termine avec un message d'échec. Si le code peut lire dans le fichier, il rouvre le fichier en écriture. C'est une solution de contournement lourde, mais cela fonctionne.

Voici une liste des drapeaux disponibles. Tout d'abord, voici ceux pour ios, dans le cas où vous utilisez un compilateur qui n'est pas complètement conforme à ANSI:

  • ios:: app: Ce drapeau signifie que vous voulez ouvrir un fichier et y ajouter.

  • ios:: in: Incluez ce drapeau si vous voulez lire dans un fichier.

  • ios:: out : Incluez ce drapeau si vous voulez écrire dans un fichier.

  • ios:: trunc : Incluez ce drapeau si vous voulez effacer le contenu du fichier avant de l'écrire. C'est le contraire de append, et c'est aussi le défaut si vous n'incluez pas spécifiquement ios:: app.

  • ios:: nocreate : Utilisez ce drapeau si vous voulez vous assurer que le fichier ne sera pas créé s'il n'existe pas, ce qui empêchera l'ouverture du fichier.

  • ios:: noreplace : Ce drapeau est l'opposé de nocreate. Utilisez ce drapeau si vous voulez seulement créer un nouveau fichier. Si vous utilisez ce drapeau et que le fichier existe déjà, le fichier ne s'ouvrira pas, et cet échec retournera true .

Les compilateurs compatibles ANSI ne supportent pas non plus l'indicateur ios:: noreplace. Dans ce cas, vous pouvez utiliser l'opposé du correctif pour l'indicateur ios: nocreate, comme indiqué ici (et trouvé dans l'exemple FileOutput03): ifstream infile ("… / MyFile.txt"); if (! infile. fail ()) {cout << "le fichier existe déjà!" << endl; return 0;} infile. Fermer(); fichier sortant ofstream ("… / MyFile.txt"); outfile << << hi >> << endl; fichier sortant. Fermer();

Dans ce cas, le code tente d'ouvrir le fichier à lire. Si le fichier existe, le code affiche un message d'erreur et se termine. Sinon, le code crée un nouveau fichier et y écrit.

Les drapeaux suivants sont disponibles dans un compilateur totalement compatible ANSI!

ios:: ate: Utilise ce drapeau pour aller à la fin du fichier après l'avoir ouvert. Normalement, vous utilisez cet indicateur lorsque vous souhaitez ajouter des données au fichier.
  • ios_base:: binary: Utilisez cet indicateur pour indiquer que le fichier que vous ouvrez contient des données binaires, c'est-à-dire des données qui ne représentent pas les chaînes de caractères.

  • ios_base:: in: Spécifie cet indicateur lorsque vous voulez lire un fichier.

  • ios_base:: out: Inclut ce drapeau quand tu veux écrire dans un fichier.
  • ios_base:: trunc: Incluez ce drapeau si vous voulez effacer le contenu d'un fichier avant de lui écrire.

  • ios_base:: app: Incluez ce drapeau si vous souhaitez ajouter au fichier. C'est le contraire de trunc - c'est-à-dire, l'information qui est déjà dans le fichier quand vous l'ouvrez restera là.

Pourquoi avez-vous besoin d'un drapeau et d'un drapeau? Il semble que l'ordinateur devrait savoir si vous écrivez dans un fichier ou en lisez, selon (respectivement) si vous utilisez ofstream ou ifstream. La réponse à la raison pour laquelle vous avez un drapeau en drapeau et un drapeau en dehors est que d'autres classes sont disponibles en plus d'ofstream et d'ifstream.

Les compilateurs qui ne supportent pas encore entièrement la norme ANSI ont une classe générique dans leurs bibliothèques appelée fstream. Les compilateurs compatibles ANSI ont dans leurs bibliothèques une classe modèle appelée basic_filebuf et une classe appelée filebuf. Si vous utilisez ces classes, vous pouvez utiliser les indicateurs d'entrée et de sortie.

En signalant les indicateurs ios en C ++ - dummies

Le choix des éditeurs

Installation des périphériques réseau Juniper dans un rack - mannequins

Installation des périphériques réseau Juniper dans un rack - mannequins

Première étape de l'utilisation de tout périphérique réseau implique l'installation du matériel et des logiciels nécessaires à son fonctionnement. Les périphériques qui exécutent le système d'exploitation Junos varient en taille et en forme: très petits (commutateurs avec seulement quelques ports fonctionnant sur un courant de bureau normal) ou massifs (routeurs centraux multi-rack nécessitant plusieurs installateurs expérimentés ...

Comment gérer les fichiers journaux des périphériques Junos - dummies

Comment gérer les fichiers journaux des périphériques Junos - dummies

Si vous avez créé des fichiers journaux volumineux types d'événements à différents types de fichiers pour la facilité d'utilisation, vous devez gérer ces fichiers. Par défaut, le logiciel Junos OS limite la taille des fichiers journaux à 128 Ko. Lorsque les événements sont consignés, lorsque la taille totale des messages dépasse 128 Ko, quelque chose ...

Le choix des éditeurs

Adolescents gais: sortir avec la famille et les amis - les mannequins

Adolescents gais: sortir avec la famille et les amis - les mannequins

Qui révèlent l'homosexualité n'est jamais facile - pour jeunes ou vieux - mais le processus peut être particulièrement difficile pour les adolescents, qui sont dépendants de leur famille et n'ont pas encore établi leur propre vie privée avec leur propre lieu de vie et un emploi pour fournir un soutien financier. En fait, les taux de suicide ...

Comment Implanon fonctionne comme contrôle des naissances - les nuls

Comment Implanon fonctionne comme contrôle des naissances - les nuls

Certaines femmes choisissent Implanon comme contraceptif parce qu'elles veulent un contraceptif Cela ne nécessite pas de maintenance quotidienne, ni même saisonnière, ni de stérilisation. Implanon est une bonne option pour ces femmes parce que le dispositif est implanté sous la peau du bras d'une femme et est efficace pendant jusqu'à trois ans. Avec ...

Comment la grossesse change votre corps et votre vie sexuelle - les nuls

Comment la grossesse change votre corps et votre vie sexuelle - les nuls

Peuvent certainement faire partie d'une vie sexuelle saine les neuf mois de grossesse. Cela dit, ce ne sera probablement plus pareil qu'auparavant. Le corps d'une femme change au cours de cette période, tout comme ses besoins. La meilleure façon d'avoir des rapports sexuels durant la grossesse est de comprendre comment le corps d'une femme change pendant ...

Le choix des éditeurs

Utiliser une structure de répertoires peu profonds pour de meilleurs résultats de moteur de recherche - mannequins

Utiliser une structure de répertoires peu profonds pour de meilleurs résultats de moteur de recherche - mannequins

Structure de répertoire pour votre site Web, il est important de ne pas aller trop loin - cela garantit que les moteurs de recherche peuvent plus facilement votre site et que les utilisateurs trouveront votre site plus accessible. La structure du répertoire fait référence à l'emplacement physique de vos fichiers dans les dossiers du site. Par exemple, ...

Comprendre les avantages des requêtes à longue queue pour le SEO - Les nuls

Comprendre les avantages des requêtes à longue queue pour le SEO - Les nuls

Stratégie de référencement pour attirer beaucoup de monde sur votre site. Mais vous ne voulez pas seulement de la quantité - vous voulez du trafic de qualité. Vous voulez attirer des visiteurs qui viennent et restent un moment et trouvent ce qu'ils recherchent sur votre site. Ce dont vous avez vraiment besoin, ce sont les clients. Dans le monde de ...

Services de syndication traditionnels et flux RSS pour le contenu SEO - dummies

Services de syndication traditionnels et flux RSS pour le contenu SEO - dummies

Certains services de syndication vendent du contenu pour votre site web. Ce contenu est souvent envoyé à des sites Web utilisant des flux RSS. La syndication de contenu n'a rien de nouveau. Une grande partie de ce que vous lisez dans votre journal local n'est pas écrite par le personnel du journal; Cela vient d'un service de syndication. En général, ce matériel devrait être meilleur que le contenu syndiqué gratuit. Cependant, ...