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 :

La fonction GetLine?


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut La fonction GetLine?
    Bonsoir
    voici un petit programme pour tester la fonction getline
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    #include <string>
    int main()
    {
    string nom;
     
                cout<<"entrer votre nom : "<<endl;
    	//cin>>nom;
    	getline(cin,nom);
    	cout<<"bonjour "<<nom<<endl;
    }
    en executant ce programme lorsque j'ecris un nom puis je tape entrer j'ecris un autre nom il m'affiche que le premier nom
    bonjour ....
    et je comprends pas pq est ce que getline à pour fonction de lire une ligne ou bien plusieurs lignes

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 35
    Par défaut
    getline, comme son nom l'indique, ne lit qu'une seule ligne...
    Donc il est normal qu'elle n'affiche que le premier nom.

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut, et bienvenue sur le forum.

    En fait, comme l'a signalé P@ulo, getline est une fonction qui récupère... une ligne.

    Or il se fait que l'appui sur <enter> fait coïncider la fin de la ligne avec... la fin de la chaine

    Normalement, d'ailleurs, la saisie s'arrête dés le premier appuis sur la touche <enter> et ne permet pas l'introduction d'une deuxième chaine (du moins, chez moi)

    Au final, lorsqu'il s'agit de récupérer une introduction clavier, rien ne vaut le bon vieux std::cin>>chaine, quant à la fonction std::getline, nous pourrions dire qu'elle est à utiliser en priorité pour récupérer une ligne dans les flux entrants autres que le flux d'entrée standard (les fichiers, un socket, ... par exemple)

    L'un des exemple "classique" d'utilisation de std::getline est le cas où l'on souhaite récupérer une ligne complete dans un fichier (de préférence à std::ifstream.getline, car il attend un char* comme paramètre), sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::ifstream ifs("fichier.txt");
    std::string str;
    /* normalement, il faudrait s'assurer de la réussite de l'ouverture du fichier 
     * avant de tenter de récupérer la ligne ;)
     */
    std::getline(ifs,str);
    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

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Je up ce topic pour rappeler qu'il existe un 3eme paramètre à std::getline qui permet de délimiter la fin de la chaine. Avec cette astuce, on peut récupérer plus d'une ligne dans une std::string si on utilise comme délimitateur par exemple le caractère de tabulation.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec la fonction Getline
    Par Arman dans le forum C++
    Réponses: 3
    Dernier message: 26/07/2013, 14h48
  2. Probléme Fonction Getline()
    Par Sixpounder dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/11/2010, 14h16
  3. fonctions getline / rand
    Par john123 dans le forum C
    Réponses: 2
    Dernier message: 13/03/2007, 01h13
  4. Problème avec la fonction getline
    Par iamor dans le forum C++
    Réponses: 36
    Dernier message: 11/08/2006, 11h29
  5. probleme avec la fonction std::getline()
    Par jamesleouf dans le forum SL & STL
    Réponses: 6
    Dernier message: 19/03/2006, 13h54

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