Fonctions istream C++

Fonctions Istream C



Le terme 'flux' en C++ décrit le flux de caractères entre le thread du programme et les entrées/sorties. Les classes de flux C++ sont nécessaires pour entrer et sortir des actions sur les périphériques IO et les fichiers. Ces classes sont conçues pour gérer les entrées et les sorties du programme et elles ont des fonctionnalités particulières.

Hiérarchie des classes de flux

Une classe C++ est composée de méthodes nécessaires pour gérer et régir les données qu'elle contient.

float, doubles et classes sont des types de données similaires à int. Une variable unique avec une classe comme type de données est appelée un objet C++. Les objets spéciaux pré-spécifiés 'cin' et 'cout' ont différentes classes comme types de données.







Les données écrites dans « cout » ou lues à partir de « cin » sont des exemples de flux de données entrant ou sortant de programmes en C++. Actuellement, nous envisageons les quatre classes suivantes pour celle-ci :



Diffusez-le
N'importe quel but peut être servi par ce flux d'entrée. Une illustration d'un istream est cin.



Ostream
C'est un flux de sortie avec plusieurs utilisations. Les Ostreams se présentent sous les formes de cout et cin.





Si flux
C'est un flux de fichiers d'entrée.

De flux
C'est un flux de fichiers de sortie. L'héritage est une notion très utilisée dans la programmation orientée objet, comme en C++, où certaines classes prennent les caractéristiques d'autres classes déjà créées. Les classes ancêtres deviennent alors des spécialisations d'elles-mêmes par l'inclusion de nouvelles fonctionnalités.



Si la classe de flux
Un ifstream peut être traité de la même manière qu'un istream, c'est ce qu'il est.

De classe flux
De la même manière que ifstreams fonctionne, mais avec une sortie au lieu d'une entrée, un ofstream est un flux de fichier de sortie. Un ofstream est utilisé de la même manière que cout après avoir été construit, ouvert et vérifié pour ne pas avoir d'erreurs.

Classe Ios
De cette classe, toutes les classes de flux sont descendues. Les flux d'entrée et de sortie sont de deux types différents.

Il définit les parties du flux qui sont indépendantes de l'état d'entrée ou de sortie du flux dans la base ios.

Contrairement aux membres qui sont discutés dans la base ios, les membres qui dépendent des paramètres du modèle sont décrits dans cette partie.

Flux (entrée)
En raison de la complexité de la bibliothèque iostream, nous ne pourrons pas la couvrir entièrement dans ces leçons. Cependant, nous mettrons en évidence les fonctions les plus utilisées. Dans cette section, nous examinerons la classe d'entrée sous différents angles (istream).

Nous avons appris que l'opérateur d'extraction (>>) sera utilisé pour acquérir les données d'un flux d'entrée.

FLUX

Dans le langage de programmation C++, le flux d'entrée est géré par la classe istream. L'entrée est lue et comprise comme une série de caractères à l'aide de ces objets de flux d'entrée. L'entrée est gérée par le cin.

Catégories de membres

istream :: sentinelle
Une classe qui exécute de nombreuses tâches et à chaque fois qu'une procédure d'entrée est effectuée. Son destructeur n'est pas tenu d'effectuer des actions. Cependant, les implémentations peuvent exécuter des tâches de démarrage ou de nettoyage supplémentaires sur le flux partagé par toutes les opérations d'entrée en utilisant la création et la destruction d'objets sentinelles.

Les fonctions

istream :: gcount
Donne le nombre de caractères obtenu à partir de l'action d'entrée non formatée la plus récente de l'objet. Les procédures d'entrée non formatées (get, getline, ignore, peek, read, read some, putback et unget) modifient la valeur renvoyée par cette fonction. Cependant, gardez à l'esprit que l'appel de peeks, putback ou unget n'extrait aucun caractère. Par conséquent, le compteur renverra toujours 0.

istream :: obtenir
Le caractère unique retire un caractère du flux. Le caractère est soit défini comme valeur de l'argument, soit renvoyé (première signature) (seconde signature).

Chaîne C : si le caractère de délimitation est présent, il n'est pas supprimé de la séquence d'entrée, mais conservé comme caractère suivant à extraire du flux s'il est présent.

istream :: getline
Supprime les caractères du flux en tant qu'entrée non formatée et les enregistre en tant que c-string dans la variable 's' jusqu'à ce que le caractère extrait devienne le caractère de délimitation ou que 'n' caractères aient été écrits dans 's'. De plus, la méthode arrêtera d'extraire les caractères si elle atteint la fin du fichier.

En interne, la fonction crée un objet avant d'accéder à la séquence d'entrée. Enfin, il tue l'objet avant de revenir, en extrayant les caractères de son objet tampon de flux associé (en supposant que tout est en ordre) comme s'il exécutait l'une de ses méthodes membres, sbumpc ou sgetc.

istream :: ignorer
Les caractères sont extraits de la séquence d'entrée et supprimés un par un jusqu'à ce que 'n' caractères aient été supprimés ou qu'un soit égal au délimiteur. De plus, si la fin du fichier est atteinte, la fonction interrompt l'extraction des caractères. La fonction positionne le drapeau « eofbit » si elle atteint ce point trop tôt (avant d'extraire n caractères ou de découvrir delim).

Avant d'accéder à la séquence d'entrée, la fonction construit un objet sentinelle en interne (avec noskipws sera vrai). Enfin, il tue l'objet sentinelle avant de revenir, en extrayant les caractères de son objet tampon de flux associé (en supposant que tout est en ordre) comme s'il exécutait l'une de ses méthodes membres : sbumpc ou sgetc.

istream :: opérateur>>
L'opérateur d'extraction (>>) applique cet opérateur à un flux d'entrée. Il a trop de membres comme fonction.

Type arithmétique

Les caractères sont extraits du flux et analysés séquentiellement pour représenter une valeur du bon type, qui est ensuite enregistrée en tant que valeur de 'val'. Avant d'accéder à la séquence d'entrée, la fonction construit un objet sentinelle en interne (noskipws sera faux). Si tout se passe bien, il exécute ensuite num get::get pour terminer les processus d'extraction et d'analyse tout en modifiant les drapeaux d'état internes du flux. L'objet sentinelle est finalement détruit avant de partir.

La fonction génère en interne un objet sentinelle avant de lire la séquence d'entrée, elle est considérée comme effectuant une entrée formatée. Enfin, il tue l'objet sentinelle avant de revenir, en extrayant les caractères de son objet tampon de flux associé (en supposant que tout est en ordre) comme s'il exécutait l'une de ses méthodes membres, sbumpc ou sgetc.

Manipulateurs

Le pf (*this) est appelé, où pf pourrait être un manipulateur. Les manipulateurs sont des routines créées spécialement pour être appelées lorsque cet opérateur est invoqué. La séquence d'entrée n'est pas affectée par cette procédure et aucun caractère n'est extrait.

istream :: retour
Le caractère restauré essaie de déplacer le curseur d'un caractère vers le bas dans le flux afin que le dernier caractère extrait du flux puisse à nouveau être extrait par des opérations d'entrée.

Avant d'accéder à la séquence d'entrée, la fonction construit un objet sentinelle en interne. Il appelle ensuite sputbackc(c) sur son objet tampon de flux associé (si bon). L'objet sentinelle est finalement détruit avant de partir.

istream :: lire
Lire un bloc de données :

Les caractères « n » sont extraits du flux et sont ensuite stockés dans le tableau pointé par « s ». Cette fonction réplique simplement un bloc de données sans inspecter le contenu des données ou ajouter un caractère nul à la fin.

Dans la fonction, un objet sentinelle est d'abord créé avant l'accès à la séquence d'entrée. Enfin, il tue l'objet sentinelle avant de revenir, en extrayant les caractères de son objet tampon de flux associé (en supposant que tout est en ordre) comme s'il exécutait l'une de ses méthodes membres : sbumpc ou sgetc.

Le nombre de membres appelants renverra le nombre total de caractères que cette fonction a correctement lus et stockés.

istream :: readsome
Cette fonction dépend du fonctionnement interne de l'objet tampon de flux spécifique lié au flux, dont le comportement est largement défini par l'implémentation pour les classes standard.

Dans la fonction, un objet sentinelle est d'abord créé avant l'accès à la séquence d'entrée. Ensuite (en cas de succès), il appelle la fonction membre dans l'avail de l'objet de tampon de flux pour déterminer combien de caractères sont maintenant disponibles avant d'appeler 'sbumpc' pour extraire jusqu'à ce nombre de caractères (ou sgetc). L'objet sentinelle est finalement détruit avant de partir.

istream ::seekg
La position dans la ligne d'entrée détermine où le caractère suivant sera extrait du flux d'entrée. Avant de lire la séquence d'entrée, la fonction construit en interne un objet sentinelle. Ensuite (si OK), il effectue l'un des deux appels à l'objet tampon de flux correspondant : pubseekpos (1) ou pubseekoff (2), (le cas échéant). Enfin, il efface la sentinelle et s'en va.

istream ::sync
Alignez le tampon d'entrée :

Synchronise la séquence d'entrée contrôlée du tampon de flux lié. L'implémentation spécifique de l'objet de tampon de flux connecté au flux détermine les spécificités de l'opération.

istream :: tellg
Obtenez la position de la séquence d'entrée :

Il donne la position du caractère actuel dans le flux d'entrée. La fonction renvoie alors -1. Si le membre échoue, il renvoie true.

Il renvoie rdbuf()->pubseekoff sinon (0,cur,in). L'objet sentinelle est finalement détruit avant de partir.

istream :: unget
Supprimer le personnage :

Essaie de déplacer le curseur d'un caractère vers le bas dans le flux afin que le dernier caractère extrait du flux puisse à nouveau être extrait par les opérations d'entrée.

Non membre

opérateur>> (istream)
L'opérateur d'extraction (>>) fournit une entrée formatée avec cette action lorsqu'il est appliqué à un flux d'entrée.

Un caractère : la séquence de caractères en extrait le caractère suivant et le stocke comme valeur de « c ». Le processus d'extraction des caractères de is et de leur stockage dans s, en tant que c-string, s'arrête (si la largeur n'est pas nulle) lorsqu'un caractère d'espacement est rencontré ou que des caractères (width ()-1) ont été extraits.

Extraction de rvalue : active l'extraction à partir d'objets istream de rvalue, ce qui a le même résultat que l'extraction à partir de lvalues : elle appelle is>>Val.

Exemple 1

Dans ce cas, nous examinerons comment nous pouvons obtenir une valeur de l'utilisateur, puis l'afficher comme résultat à l'écran.

#include
utilisant espace de noms std ;
entier principale ( )
{
entier Non ;
cout << 'Veuillez entrer un numéro' ;
en mangeant >> Non ;
cout << 'La valeur saisie est : ' << Non << ' \n ' ;
}

Nous inclurions le fichier d'en-tête . Ensuite, nous utiliserons l'espace de noms 'std' dans l'espace de noms standard. Nous appellerions la fonction main(). Une variable nommée 'no' sera déclarée dans cette méthode. Le type de données « int » est représenté pour cette variable. Le terme 'int' est l'abréviation d'un entier. Ensuite, l'instruction 'cout' est utilisée. Cette commande imprime la ligne.

L'utilisateur saisira une valeur aléatoire après l'affichage de ce texte à l'écran. Ensuite, la mention « cin » aurait été utilisée. Cette commande demande à l'utilisateur d'indiquer la valeur. Le numéro saisi par l'utilisateur serait enregistré dans une variable. La valeur fournie par l'utilisateur serait affichée à l'écran à l'aide de la commande 'cout'.

Exemple 2

Dans ce cas, nous verrions comment obtenir un nom de l'utilisateur, puis l'afficher à l'écran en tant que résultat.

#include
utilisant espace de noms std ;

entier principale ( )

{

carboniser Nom [ 125 ] ;
cout << 'Entrez votre nom' << fin ;


en mangeant >> ws ;

en mangeant . getline ( Nom, 125 ) ;

cout << Nom << fin ;

revenir 0 ;

}

Nous incorporerions le fichier d'en-tête . Ensuite, nous utiliserons l'espace de noms standard comme 'std'. Nous appellerions la fonction main(). Dans cette méthode, nous allons déclarer une variable. Cette variable contient le type de données 'char'. Ensuite, la déclaration « cout » est utilisée. Cette commande affiche le texte 'Entrez votre nom' à l'écran. Après avoir affiché ce texte à l'écran, l'utilisateur entrerait n'importe quel nom. Ensuite, nous utiliserions la déclaration « cin ».

Cette commande prend la valeur de l'utilisateur. Le nom fourni serait stocké dans une variable 'ws'. Ici, encore une fois, nous utiliserions la commande 'cin'. Dans cette commande, la fonction getline() est appliquée. Cette fonction contient le paramètre qui comprend le nom entré par l'utilisateur et la longueur du nom. La commande 'cout' sera utilisée pour afficher le nom fourni par l'utilisateur. Pour terminer le code, la commande ‘return 0’ sera utilisée.

Conclusion

Tout d'abord, nous avons parlé de ce que sont les fonctions C++ istream. Ensuite, nous observons plusieurs fonctions et définitions importantes mentionnées. Dans cet article, nous avons exécuté différents codes contenant diverses fonctions istream. Dans le premier code, nous prenons n'importe quel numéro de l'utilisateur et affichons ce numéro à l'écran. Dans le second, l'utilisateur a saisi le nom et imprimé ce nom sur l'écran.