IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Buffer cin, caract�re de fin


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par d�faut Buffer cin, caract�re de fin
    Bonjour,

    Je ne comprend pas bien le principe de cin et cout, je vous explique de suite ma logique:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int x;
    string texte;
     
    cin >> x;
         // Buffer = 16\n (par exemple)
         // x = 16;
         // Il reste "\n" donc dans le buffer
    cin >> texte;
         // "cin" regarde dans le buffer et trouve "\n" donc ne demande pas à l'utilisateur d'entrer du texte
         // Donc pour moi texte = "\n"
    Sauf que voila, ma logique n'est apparemment pas la bonne. Je cherche donc des explications au fonctionnement de cin et cout, je vous remercie d'avance !

    Alors qu'avec getline(), ma logique fonctionne, serait-ce parce que cin ignore "\n"?

  2. #2
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    En fait, il me semble le retour chariot est supprim� du flux quand il est lu par le cin >> x.

    Par ailleurs, attention, operator>>(ostream&, string&) ne lit qu'un mot, au sens qu'il s'arr�te au premier caract�re d'espacement (espace, tab, \n, entre autre), tandis que getline va jusqu'au prochain s�parateur, qui est \n par d�faut.

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 27
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par d�faut
    Super! Deux jours de recherches pour deux lignes de r�ponses que j'attendais !
    Leternel je te remercie beaucoup !
    J'avais aussi post� sur un autre site, mais la seul r�ponse que j'ai eu est une fermeture automatique du sujet. Bref site minable compar� � ce site !

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Citation Envoy� par leternel Voir le message
    En fait, il me semble le retour chariot est supprim� du flux quand il est lu par le cin >> x.
    C'est vrai que je n'ai trouv� rien que le pr�cise, mais c'est ce qui permet d'avoir une �criture cin>>myInt>>myFloat>>string1>>string2; pour lire 1 2.3 toto maison dans la console
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  5. #5
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,
    Citation Envoy� par leternel Voir le message
    En fait, il me semble le retour chariot est supprim� du flux quand il est lu par le cin >> x.
    En fait, c'est plus g�n�ral que cela : l'op�rateur >> supprime tout caract�re pour lequel la fonction std::isspace renverra true. Autrement dit, il supprime automatiquement tous les espace ' ', les tabulations '\t' et les retours charriots '\n' (voir d'autres comme la tabulation verticale ) qu'il peut rencontrer...

    Ainsi, on a la garantie que std::cin>>i>>j>>k; (avec i, j et k �tant de type int) fonctionnera avec les introductions
    • 1 2 3<enter>
    • 1<espace>2<espace><espace><espace>3<enter>
    • 1<enter>2<enter>3<enter>
    • 1<enter><espace>2<enter><espace>3<enter>
    • et toutes les autres combinaisons possibles de valeurs enti�re, d'espaces et d'appuis sur la touche <enter> (je ne parle pas de la touche <tab> car la mani�re dont la console r�agit � son utilisation varie en fonction de la console utilis�e )
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  6. #6
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Ca me disait quelque chose... Merci pour la pr�cision, koala01

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [RegEx] Supprimer les caract�res en fin de chaine ?
    Par tintin72 dans le forum Langage
    R�ponses: 8
    Dernier message: 05/04/2008, 12h15
  2. Dll C++ - Caract�re de fin de chaine
    Par waw_41 dans le forum VB 6 et ant�rieur
    R�ponses: 11
    Dernier message: 11/12/2007, 18h03
  3. [LOAD DATA] Caract�re de fin de Fichier
    Par Iphelias dans le forum SQL Proc�dural
    R�ponses: 3
    Dernier message: 22/08/2007, 09h20
  4. [Debutant]Caract�re de fin ligne
    Par smutmutant2003 dans le forum Shell et commandes GNU
    R�ponses: 6
    Dernier message: 12/07/2007, 16h49
  5. Rajout de caract�re � la fin d'une chaine
    Par horneth dans le forum VB.NET
    R�ponses: 9
    Dernier message: 02/02/2007, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo