Maison >développement back-end >C++ >Pourquoi « getline » ne demande-t-il pas de saisie après avoir utilisé l'opérateur « >> » ?

Pourquoi « getline » ne demande-t-il pas de saisie après avoir utilisé l'opérateur « >> » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 11:26:11724parcourir

Why Doesn't `getline` Prompt for Input After Using the `>>`Opérateur ?
>` Opérateur ? " />

getline ne demande pas de saisie

Dans cet extrait de code, le problème survient lors de l'utilisation de getline après avoir utilisé l'opérateur >>. Lorsque >> ; est utilisé pour lire l'entrée, l'entrée de l'utilisateur est suivie d'un caractère de nouvelle ligne qui reste dans le tampon d'entrée. Ce comportement devient problématique lorsque getline est appelé immédiatement après, car il s'attend à lire une ligne d'entrée mais trouve le caractère de nouvelle ligne et se termine sans inviter l'utilisateur.

Solution :

Pour résoudre ce problème, il existe deux solutions viables solutions :

  1. Utilisez ignorer pour consommer le Newline :
    Appelez ignore pour consommer le caractère de nouvelle ligne du tampon d'entrée avant d'utiliser getline.

    cin.ignore();
    getline(cin, mystr);
  2. Utilisez getline exclusivement :
    Au lieu de mélanger >>, utilisez getline exclusivement pour lire toutes les entrées. Cette approche simplifie le code et élimine les problèmes potentiels liés à. caractères de nouvelle ligne.

    getline(cin, name);
    getline(cin, i);
    getline(cin, mystr);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn