Meilleure réponse
Ici, vous en éclairerez davantage avec Cin
Utilisation de , cin.get , cin.getline et cin. ignore
Utilisation de lopérateur >> (avec cin)
Le> > peut être utilisé lorsque vous souhaitez simplement lire les prochains caractères non vides entrés par lutilisateur dans un caractère ou un tableau de caractères. Tous les caractères imprimables qui suivent le premier espace seront ignorés et ne seront pas stockés dans la variable. Ne pas utilisez une instruction comme,
cin >> UserExplanation;
si, par exemple, vous souhaitez pour obtenir une phrase entière de lutilisateur qui comprend des espaces. Dans ce cas, vous seriez mieux servi en utilisant les fonctions membres cin get ou getline .
Question : Un terminateur nul sera-t-il automatiquement stocké à la fin du tableau de caractères, UserExplanation?
Utilisation de cin.get
La fonction membre get non formatée fonctionne comme lopérateur >> à deux exceptions près. Tout dabord, la fonction get inclut des espaces blancs , tandis que lextracteur exclut les espaces blancs lorsque lindicateur ios :: skipws est défini (valeur par défaut). Deuxièmement, la fonction get est moins susceptible de provoquer le vidage dun flux de sortie lié (cout, par exemple).
Une variante de la fonction get spécifie une adresse de tampon et le nombre maximum de caractères à lire. Ceci est utile pour limiter le nombre de caractères envoyés à une variable spécifique, comme le montre cet exemple:
#include
void main()
{
char line[25];
cout << " Type a line terminated by carriage return\n>";
cin.get( line, 25 );
cout << " " << line;
}
Dans cet exemple, vous pouvez saisir jusquà 24 caractères et un caractère de fin. Tous les caractères restants peuvent être extraits ultérieurement.
Utilisation de cin.getline
La fonction membre getline est similaire à la obtenir la fonction. Les deux fonctions autorisent un troisième argument qui spécifie le caractère de fin pour lentrée. La valeur par défaut est le caractère de nouvelle ligne. Les deux fonctions réservent un caractère pour le caractère de fin requis . Cependant, get quitte le caractère de fin dans le flux et getline supprime le caractère de fin.
Lexemple suivant spécifie un caractère de fin pour lentrée flux:
#include
void main()
{
char line[100];
cout << " Type a line terminated by "t"" << endl;
cin.getline( line, 100, "t" );
cout << line;
}
Utilisation de cin.ignore
cin.ignore (int nCount = 1, int delim = EOF);
Paramètres
nCount - Le nombre maximum de caractères à extraire. delim - Le caractère séparateur (par défaut EOF).
Remarques
Extrait et supprime jusquà nCount caractères. Lextraction sarrête si le délimiteur est extrait ou si la fin du fichier est atteinte. Si delim = EOF (valeur par défaut), alors seule la condition de fin de fichier entraîne la fin. Le caractère délimiteur est extrait.
Réponse
cin.ignore () est une fonction prédéfinie qui ignore / efface un ou plusieurs caractères du tampon dentrée.
Pré-requis: 1. Le cin traite un espace blanc, cest-à-dire " ", " \ t ", " \ n " comme caractère de délimitation.
2. Lorsque vous lisez quoi que ce soit à partir du périphérique dentrée standard, clavier ici, il entre dabord dans le tampon dentrée . Le tampon dentrée est un emplacement qui contient toutes les informations entrantes avant lui continue vers le processeur pour le traitement.
Le problème: 1. Supposons que vous vouliez lire une "chaîne" de lutilisateur. car mon nom [10];
2. Vous finissez par utiliser cin, au lieu de cin.getline () cin >> myname;
3. Je tape «ABC», puis appuyez sur la touche Entrée. il prend ABC et traite le "\ n" suivant comme délimiteur.En conséquence, "\ n" nest pas lu et il reste dans le tampon dentrée .
4. Donc ici, cin.ignore () ignorera ces caractères non lus qui sont restés dans le tampon dentrée.
La solution: Si vous voulez éviter les situations, gardez simplement à lesprit de ne pas utiliser cin pour saisir des chaînes. et tada, problème résolu !!