Que fait cin.getline en C ++?


Meilleure réponse

cin.getline () vous permet de saisir une chaîne qui a également des espaces blancs. Sa syntaxe est la suivante: cin.getline (nom de la chaîne, taille de la chaîne); Prenons lexemple suivant: Supposons que jentre Hello World pour str et strr. #include en utilisant lespace de noms std;

int main()

{

char str[100]", strr[100];

cout<<"Enter the strings : ";

cin.getline( str, 100 ); //enter Hello World

cin>>strr; //enter Hello Word.

cout<

cout<

return 0;

}

Cest la différence fondamentale. cin ne prend pas en compte les espaces blancs dans la chaîne, contrairement à cin.getline.

Réponse

Cest lun des problèmes les plus courants auxquels les étudiants sont généralement confrontés lorsquils utilisent getline () fonction.

Au moment où vous exécutez votre programme, vous tapez Delhi et appuyez sur la touche Entrée. Cette touche dentrée nest rien dautre que le caractère de nouvelle ligne . Les caractères despacement, tels que les tabulations et \ n, sont normalement ignorés (sautés) lors de la saisie de valeur à laide de cin.

En général, des caractères supplémentaires sont laissés dans le flux dentrée après lentrée soi-disant terminé. Ils sont ensuite transmis à lopération dentrée suivante, même sils ne lui sont pas destinés. Souvent, cest un caractère de nouvelle ligne qui reste en arrière, mais parfois dautres caractères sont également laissés de côté.

Dans votre programme, ce caractère de nouvelle ligne sert dentrée à la fonction getline (). Depuis, cette fonction a son entrée, elle ne vous permet pas de saisir la valeur. Vous devez vous débarrasser de ce caractère et alors votre programme fonctionnera parfaitement.

Pour se débarrasser de ces caractères superflus, le ignore (MAX, DELIM) la fonction membre de la classe istream est utilisée. Il lit et jette jusquà MAX caractères, y compris le caractère délimiteur spécifié. Utilisez cette fonction avant dappeler la fonction getline () comme suit:

cin.ignore (1, "\ n");

Étant donné que les caractères supplémentaires peuvent également inclure des espaces blancs (par exemple, après avoir tapé Delhi , vous mettez un espace, puis appuyez sur la touche Entrée), au lieu de 1, il serait plus sûr dutiliser 10.

cin.ignore (10, "\ n");

Ne vous inquiétez pas de la classe istream. Elle est déclarée dans le fichier den-tête IOSTREAM. De plus , getline () est également une fonction membre de la classe istream elle-même.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *